@Pathvariable和@Requestparam,使用区别

年后开工的第一天总是闲到没事情干的。于是自己给自己找事情做——code Review!

看到一个接口的代码的时候有了以下疑惑:同样是根据某个字段(该字段是一个类似id、手机号、身份证号性质一样的字段)去进行列表查询,怎么前面的一个接口用@Pathvaribale后面一个接口却又用@RequestParam呢?

为什么呢?

分析

先从多方面来对比一下两者。

请求路径url

@PathVariable:xxx/xxx/{phone}

@RequestParam:xxx/xxx?phone=15515916834&name=张三

请求方式

两个注解都是适用于restful风格下的@GetMapping、@DeleteMapping、@PutMapping、@PostMapping。

请求参数

@PathVariable:一般适用于只有一个请求参数的情况下使用。比如:根据user的id查询User详情/根据宿舍号查询宿舍成员列表

@RequestParam:可以多个。但据同事说这玩意在前端也有上限,大小好像是不超过2M。而且入参数量太多一般建议改成封装进一个请求体里面用@RequestBody,也就是用JSON字符串的方式来请求。

两者相同之处:

  1. 都是用来做传参的。

  1. 效果也都一样。

不同之处:

1.传参的方式不一样:地址上传参(@Pathvariable)和协议上携带参数(@RequestParam)。

2.如果以后这个接口未来参数会有变化(有可能不只一个参数),那就不要用 @PathVariable 的形式。

第二点为什么这么说呢?

@RequestParam和@pathVariable都可以传多个参数。但是@PathVariable更适合请求参数只有一个的情况下。@RequestParam和@pathVariable都可以传多个参数,那为什么当多个参数的时候,要用@RequestParam呢?因为要符合restful风格规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值