文章目录
- 常见问题
- 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、页面请求位置
负载里面
2、代码
@RequestBody
3、注意
- 只有 Post 请求才能有
- 只能有一个 Body 参数
- 被 @RequestBody 修饰的参数不能为 null