文章目录

  • 常见问题
  • 1、每种类型的参数能有几个?
  • 2、参数能否不传
  • 3、我什么时候用哪种类型的参数
  • 4、@PathVariable 注解加和不加的区别
  • 一、参数类型
  • 二、路径参数
  • 1、页面请求位置
  • 2、代码
  • 3、注意
  • 三、query 参数
  • 1、页面请求位置
  • 2、代码
  • 3、注意
  • 四、body 参数
  • 1、页面请求位置
  • 2、代码
  • 3、注意



常见问题

1、每种类型的参数能有几个?

只有 Body 参数只能有一个,其他都可以有多个

2、参数能否不传

这个是根据注解中的 required 参数来判断的。如果你不加注解,都不是必传。如果你加了注解,默认都是必传

3、我什么时候用哪种类型的参数

  • 查询详情的 API 一般用 路径参数,将 id 作为参数
  • 对于汇总查询的 API ,一般用 body 参数
  • 集合类型的参数(List,Set)。使用 body 参数,因为 query 参数有长度限制,加起来最长为300到1000字符。浏览器不同长度限制也不同。所以建议集合类型参数放在Body 参数里。
  • 存在特殊字符的参数,比如=, / 。使用 body 参数,因为路径参数和 query 参数都放在 url 上的,url 有自己的关键字。特殊字符容易起冲突。

4、@PathVariable 注解加和不加的区别

加和不加没什么区别。只是 @PathVariable 可以对参数改名,可以限制参数是否必填。注意:@PathVariable 这个加上后,那个参数是默认设置为必填了,可以通过 required 参数进行设置。

一、参数类型

路径参数、query 参数、body 参数

二、路径参数

1、页面请求位置

前面的参数

2、代码

需要在参数前加一个 @PathVariable

3、注意

  • 路径参数可以有多个
  • 路径参数最好不要是字符串,因为字符串在url中有限制,特殊字符传输会出问题
  • @PathVariable(“organizationId”) Long tenantId;可以通过这种方式,对路径参数进行改名

三、query 参数

1、页面请求位置

后面的参数

2、代码

@RequestParam,可加可不加

3、注意

  • query 参数有长度限制,加起来最长为300到1000字符。浏览器不同长度限制也不同。所以建议集合类型参数放在Body 参数里。
  • @RequestParam 的参数 required 默认是true,就是 @RequestParam Long id。那这个id就是必输的了
  • query 参数可以有多个
  • @RequestParam 注解有没有都一样
  • @RequestParam 也可以对传进来的参数进行改名。@RequestParam(“ids”) Long id。ids 是请求中的参数,id 是转换后的参数

四、body 参数

1、页面请求位置

负载里面

apipost请求RequestMapping接口 api请求参数_spring

2、代码

@RequestBody

3、注意

  • 只有 Post 请求才能有
  • 只能有一个 Body 参数
  • 被 @RequestBody 修饰的参数不能为 null