场景分析
首先我们在开发过程中是一定会使用到请求参数,比如@RequestParam
、@RequestBody
等但是大部分同学都不太清楚每一个参数实际如何去使用,以及这些注解该如何去灵活使用,那么本篇文章就带大家去归纳梳理这些注解的如何使用,以及有哪些注意事项
注解概览
下面我将会列举一些在开发中常见的注解
@RequestParam
这个注解使用的场景在于将参数使用?
的形式拼接在url的后面,然后我们可以设置url传参然,就能在请求中拿到对应的参数,例如:
- 访问URL:
http://localhost:8080/search?query=something
然后我们在参数接收的时候设置
@GetMapping("/search")
public String search(@RequestParam(name = "query", required = false, defaultValue = "default") String queryParam) {
// 方法体...
return "搜索结果: " + queryParam;
}
然后我们介绍一下它的重要参数
value
/name
:参数的名称。required
:是否必须,默认为true
。defaultValue
:默认值,如果请求中没有相应的参数。
@PathVariable
@Param
上面两个注解虽然用法都是一样的,但是他们还是有本质区别的
@Param
不是Spring框架的一部分,而是MyBatis用于绑定参数的注解。PathVariable
用于获取URI模板中的变量。
使用实例:
@GetMapping("/example/{variable}")
public String exampleMethod(@PathVariable("variable") String var) {
// ...
}
这个注解只有一个接收参数就是value
我们可以直接使用这个注解接收使用
@RequestHeader
这个注解大部分人应该用不上了,但是有一些特殊场景还是要使用,就是用户获取请求头中的某个值。这里简单上个实例理解一下
public String exampleMethod(@RequestHeader(name = "headerName") String header) {
// ...
}
参数这个就有两个一个就是指定接收name
required
:是否必须,默认为true
。
@RequestBody
这个注解应该大家都比较熟悉了,可以直接写在@PostMapping("/example")
下面,然后我们可以直接拿到这个参数进行接收,比较简单易懂
@PostMapping("/example")
public String exampleMethod(@RequestBody MyObject body) {
// ...
}
@RequestPart
最后是用于文件上传的时候接收的注解,主要是用于处理multipart/form-data
请求
使用实例
@PostMapping("/upload")
public String handleFileUpload(@RequestPart("file") MultipartFile file) {
// ...
}
使用推荐
这里有小伙伴就有疑问了,在我们get的时候该如何去选合适的注解呢?
这里再简单说一下他们的使用场景
@PathVariable
通常用于处理RESTful风格的URL,这种方式通常用于访问具有层次结构的资源或者在CRUD(创建、读取、更新、删除)操作中标识资源。- 而
@RequestParam
页面中的表单字段、过滤选项或者其他任何需要通过查询字符串传递的参数。
小结
当然每个注解都有它特殊的使用用法,根据自己的业务场景选择合适的注解,理解它们的工作原理和适用场景才能开发高效且易于维护的项目