SpringBoot中的各种请求入参注解傻傻分不清?这篇文章教会你

51 阅读3分钟

场景分析

首先我们在开发过程中是一定会使用到请求参数,比如@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页面中的表单字段、过滤选项或者其他任何需要通过查询字符串传递的参数。

小结

当然每个注解都有它特殊的使用用法,根据自己的业务场景选择合适的注解,理解它们的工作原理和适用场景才能开发高效且易于维护的项目