Feign的三种传参方式及注解

Feign的三种传参方式

1 路径拼接传参@RequestParam

路径拼接传参就是在路径后面添加 ? 和值

1.1 先在消费者的controller中增加一个方法

@RequestMapping("/deleteUserById")//请求路径
    public User deleteUserById(Integer id) {//由于是路径拼接传参,这里的参数不需要加注解
        return userFeign.deleteUserById(id);
    }

1.2 在UserFeign中增加被调用的方法

参数添加注解@RequestParam

  @RequestMapping(value = "/deleteUserById")
    User deleteUserById(@RequestParam("id") Integer id);

1.3在提供者中增加方法

controller

@RequestMapping(value = "/deleteUserById")
    User deleteUserById(@RequestParam("id") Integer id) {
        return userService.deleteUserById(id);
    }

接口和实现类

User deleteUserById(Integer id);
@Override
    public User deleteUserById(Integer id) {
        return new User(0-id, "小明1", 80);
    }

1.4测试路径拼接传参

在这里插入图片描述

2 Restful风格传递参数@PathVariable

2.1 先在消费者的controller中增加一个方法

 @RequestMapping("/getUserById/{id}")
    public User getUserById(@PathVariable("id") Integer id) {
        return userFeign.getUserById(id);
    }

2.2 在UserFeign中增加被调用的方法

参数添加注解@PathVariable

    @RequestMapping(value = "/getUserById/{id}")
    User getUserById(@PathVariable("id") Integer id);

2.3在提供者中增加方法

controller

//方法的访问路径
    @RequestMapping("/getUserById/{id}")
    public User getUserById1(@PathVariable("id") Integer id) {
        return userService.getUserById(id);
    }

接口和实现类

User getUserById(Integer id);
 @Override
    public User getUserById(Integer id) {
        return new User(id, "小明1", 22);
    }

2.4 测试Restful风格传参

在这里插入图片描述

3 对象传参@RequestBody

3.1 先在消费者的controller中增加一个方法

 @RequestMapping("/addUser")
    public User addUser(User user) {
        return userFeign.addUser(user);
    }

3.2 在UserFeign中增加被调用的方法

以对象传参需要加上@RequestBody注解

@RequestMapping(value = "/addUser")
    User addUser(@RequestBody User user);

3.3 在提供者中增加方法

controller

@RequestMapping(value = "/addUser")
    User addUser(@RequestBody User user) {
        return userService.addUser(user);
    }

接口和实现类

User addUser(User user);
@Override
    public User addUser(User user) {
        return user;
    }

3.4 测试对象传参

在这里插入图片描述

4 总结

总之 ? 传参就用@RequestParam,获取请求参数并提交就用@PathVariable,对象传参就用@RequestBody,特别注意的是@RequestParam和@PathVariable的value值都要写出来,不然浏览器识别不了,而Java中万物皆对象,比如Map,Set,List等等,都可以当做对象以@RequestBody传递参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值