常见的注解 @PathVariable、@RequestHeader、@RequstParam、@RequestBody、@RequstPart

注解:

@PathVariable、@RequestHeader、@ModelAttribute、@RequstParam、@MatrixVariable、@RequestBody

1、@PathVariable

符合rest风格的api传值方式,有多个变量时,也可以接受一个Map(前提:参数必须为String类型),springboot会自动封装到Map里

@RequestMapping(value = "/param/{userId}/{username}", method = RequestMethod.GET)
public Map testParams(
        @PathVariable("userId") int id,
        @PathVariable("username") String name,
        @PathVariable Map<String, String> userInfo
) {
    Map<String, Object> obj = new HashMap<>();
    obj.put("id", id);
    obj.put("name", name);
    obj.put("userInfo", obj);
    return obj;
}

 2、@RequestHeader

获取请求头信息,可获取单个key value,也可以获取多个请求头信息。

@RequestMapping(value = "/param/{userId}", method = RequestMethod.GET)
public Map testParams(
        @PathVariable("userId") int id,
        @RequestHeader("Host") String userHost,
        @RequestHeader Map<String, String> objHeader
) {
    Map<String, Object> obj = new HashMap<>();
    obj.put("id", id);
    obj.put("host", userHost);
    obj.put("headers", objHeader);
    return obj;
}

 3、@RequstParam

这个注解通常用在get方法请求上。

作用:将请求参数绑定到你的控制器的方法的参数上

语法:

@RequstParam(value = "参数名", require ="true/false", defaultValue = "默认值")

value:参数名
 
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。

defaultValue: 默认参数值,如果设置了该值,require = true,将失效,

获取路径拼接参数,可单个获取,也可以以Map类型形式获取

@RequestMapping(value = "/param", method = RequestMethod.GET)
public Map testParams(
        @RequestParam("userId") int id,
        @RequestParam("username") String name,
        @RequestParam Map<String, String> params
) {
    Map<String, Object> obj = new HashMap<>();
    obj.put("id", id);
    obj.put("name", name);
    obj.put("params", params);
    return obj;
}

补充:
在文件上传时,如果携带额外参数,可以使用@RequstParam(value="额外参数名")来接收

它和@RequstPart区别:
(1)@RequstPart这个注解用multipart/form-data表单提交请求的方法上;

(2)支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。

(3)@RequestParam也同样支持multipart/form-data请求。

(4)他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
(5)@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。

4、@RequestBody

获取post请求体中的内容

@RequestMapping(value = "/param", method = RequestMethod.POST)
public Map testParams(@RequestBody Map<String, String> userInfo) {
    Map<String, Object> obj = new HashMap<>();
    obj.put("userInfo", userInfo);
    return obj;
}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值