Spring服务注解
Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping} 来帮助简化常用的HTTP方法的映射 并更好地表达被注解方法的语义1、@GetMapping对应注解@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)作用:对应查
@RequestMapping(value ="/xxx",method = RequestMethod.GET)
@GetMapping,@PostMapping,@PutMapping,@DeleteMapping为@RequestMapping缩写
1. @GetMapping
对应注解@RequestMapping(value = “/get/{id}”, method = RequestMethod.GET)
作用:对应查询,获得数据,表明是一个查询请求
2. @PostMapping
对应注解@RequestMapping(value = “/add/user”,method = RequestMethod.POST)
作用:对应添加,添加数据,表明是一个添加请求
3. @PutMapping
对应注解@RequestMapping(value = “/modify/user”,method = RequestMethod.PUT)
作用:对应更新,更新数据,表明是一个更新请求
4. @DeleteMapping
对应注解@RequestMapping(value = “/del/{id}”,method = RequestMethod.DELETE)
作用:对应删除,删除数据,表明是一个删除请求
5.@PathVariable
用于处理路径参数: /list/{id}
常用于Get,Delete
可以匹配正则表达式 例如:{id: [a-zA-Z0-9]+} 不符合正则会报404
@RequestMapping("/list/{id}")
public xxx list(@PathVariable String id){
return xxx;
}
// 或者
@RequestMapping("/list/{id}")
public xxx list(@PathVariable("id") String id){
return xxx;
}
6. @RequestParam
用于处理请求头内的元素:Content-Type
常用于Get,Delete
可加可不加:不加则 /list或/list?id=xxx都能访问成功服务;加上需要required默认为true必须用/list?id=xxx,设置required为false则于不加一样
@RequestMapping("/list")
public xxx list(String id){
return xxx;
}
// 两者效果一样
@RequestMapping("/list")
public xxx list(@RequestParam(value="id",required=false) String id){
return xxx;
}
value:请求参数名;
required:是否必需,默认为 true; true 标识必须带参数例如:/list?id=xxx;反之则为/list
defaultValue:默认值,设置该值,required 将自动设为 false,不传则值为defaultValue设置的默认值
7.@RequestBody
用于处理请求体中的内容: application/json,application/xml
常用于:Post,Put
加上RequestBody后会自动转换成map,list,实体类等
传参的方式,对应以上三种注解:
路径参数: /list/{id}
请求头:/list?id=xxx
请求体: json或xml
@RequestParam和@PathVariable相同点和区别
相同点:
根据用户输入不同获取不同服务
不同点:
PathVariable:
路径传值:/list/{name}/file/{id} => /list/user1/file/123; /list/user2/file/223
必须传值
多用于:当URL指向的是某一具体业务资源(或资源列表),例如博客,用户时
RequestParam:
请求头传值/list?id=xxx
可以通过required选择传不传
可以通过defaultValue设置默认值
多用于:当URL需要对资源或者资源列表进行过滤,筛选时
8.RequestBody和RequestParam分别支持的类型
在 Spring MVC 中,`@RequestBody` 和 `@RequestParam` 注解都可以用于接收请求参数,但是它们所支持的参数类型有所不同。
`@RequestBody` 注解不支持简单类型参数的接收,它可以将请求体中的数据以快捷的方式绑定到 Java 对象或对象集合上。需要注意的是,`@RequestBody` 默认只能接收 Content-Type 为 application/json 的请求体,但是您可以通过配置更改为接收其他类型的请求体,例如 application/xml、application/x-www-form-urlencoded 等。
常见数据类型:
- JSONObject,List<String>, Map<String, String>,Java对象
- JSON 格式的请求体:将请求体转为 Java 对象
- XML 格式的请求体:将请求体转为 Java 对象
- application/x-www-form-urlencoded 格式的请求体:将请求体转为一个 Map<String, String> 对象
`@RequestParam` 注解则用于接收 URL 查询字符串中的参数,或者表单中的参数,它支持简单类型参数的接收,例如 String、int、double 等基本类型,同时也支持自定义类型的转换。
常见数据类型:
- String:接收一个字符串参数
- 基本类型:int、long、float、double、short、boolean 等
- 封装类型:Integer、Long、Float、Double、Short、Boolean 等
- 日期类型:java.util.Date、java.time.Instant、java.time.LocalDate、java.time.LocalDateTime 等
- 文件类型:MultipartFile、Part 等
总之,当您需要处理请求体中的数据时,使用 `@RequestBody` 注解;当您需要处理 URL 中的查询字符串或表单数据时,使用 `@RequestParam` 注解。
更多推荐



所有评论(0)