1. @RequestParam
该标签用于接受请求头中的参数,该标签配置了四个参数:
public @interface RequestParam {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
String defaultValue() default ValueConstants.DEFAULT_NONE;
}
value
,name
,用来接收请求的参数,与请求参数的 Key 值相互绑定。(注:@AliasFor 表示别名,它可以注解到自定义注解的两个属性上,表示这两个互为别名,也就是说这两个属性其实同一个含义)required
,表示该请求参数是否为必须传入,默认为 true,即必须传入。defaultValue
,设置请求参数传入为空,或没有传入该参数时,使用的默认值,当然对应 required 参数需要设置为 false。
2. @RequestBody
该标签用于接受请求中的请求体,该标签只有一个参数:
public @interface RequestBody {
boolean required() default true;
}
required
,与 @RequestParam 标签相同,表示该请求参数是否为必须传入,这里指是否需要传递请求体,默认为 true,即必须传入。
3. 不同点
3.1 处理的请求的 Content-Type 不同
- @RequestParam 可处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容的请求,Content-Type默认为该属性。@RequestParam 也可用于其它类型的请求,例如:POST、DELETE等请求。
- @RequestBody 接收的参数是来自 requestBody 中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded 编码格式的数据,比如:application/json 等