Feign的三种传参方式
1 路径拼接传参@RequestParam
路径拼接传参就是在路径后面添加 ? 和值
1.1 先在消费者的controller中增加一个方法
@RequestMapping("/deleteUserById")//请求路径publicUserdeleteUserById(Integer id){//由于是路径拼接传参,这里的参数不需要加注解return userFeign.deleteUserById(id);}
1.2 在UserFeign中增加被调用的方法
参数添加注解@RequestParam
@RequestMapping(value ="/deleteUserById")UserdeleteUserById(@RequestParam("id")Integer id);
1.3在提供者中增加方法
controller
@RequestMapping(value ="/deleteUserById")UserdeleteUserById(@RequestParam("id")Integer id){return userService.deleteUserById(id);}
接口和实现类
UserdeleteUserById(Integer id);
@OverridepublicUserdeleteUserById(Integer id){returnnewUser(0-id,"小明1",80);}
1.4测试路径拼接传参
2 Restful风格传递参数@PathVariable
2.1 先在消费者的controller中增加一个方法
@RequestMapping("/getUserById/{id}")publicUsergetUserById(@PathVariable("id")Integer id){return userFeign.getUserById(id);}
2.2 在UserFeign中增加被调用的方法
参数添加注解@PathVariable
@RequestMapping(value ="/getUserById/{id}")UsergetUserById(@PathVariable("id")Integer id);
2.3在提供者中增加方法
controller
//方法的访问路径@RequestMapping("/getUserById/{id}")publicUsergetUserById1(@PathVariable("id")Integer id){return userService.getUserById(id);}
接口和实现类
UsergetUserById(Integer id);
@OverridepublicUsergetUserById(Integer id){returnnewUser(id,"小明1",22);}
2.4 测试Restful风格传参
3 对象传参@RequestBody
3.1 先在消费者的controller中增加一个方法
@RequestMapping("/addUser")publicUseraddUser(User user){return userFeign.addUser(user);}
3.2 在UserFeign中增加被调用的方法
以对象传参需要加上@RequestBody注解
@RequestMapping(value ="/addUser")UseraddUser(@RequestBodyUser user);
3.3 在提供者中增加方法
controller
@RequestMapping(value ="/addUser")UseraddUser(@RequestBodyUser user){return userService.addUser(user);}
接口和实现类
UseraddUser(User user);
@OverridepublicUseraddUser(User user){return user;}
3.4 测试对象传参
4 总结
总之 ? 传参就用@RequestParam,获取请求参数并提交就用@PathVariable,对象传参就用@RequestBody,特别注意的是@RequestParam和@PathVariable的value值都要写出来,不然浏览器识别不了,而Java中万物皆对象,比如Map,Set,List等等,都可以当做对象以@RequestBody传递参数
版权归原作者 只会写HelloWorld的程序员 所有, 如有侵权,请联系我们删除。