其他分享
首页 > 其他分享> > OpenFeign调用服务并传参

OpenFeign调用服务并传参

作者:互联网

1.零散参数的传递

1. querystring的方式  url?id=xxx&name=xxx
  被调用的服务方 
  @GetMapping("/test")
    public String test(@RequestParam("id") Integer id, @RequestParam("name") String name){
        log.info("接收到的id为 {}, 接受的name为 {}", id, name);
        return "products API test";
    }

    feginclient中
    @GetMapping("/test")
    public String test(@RequestParam("id") Integer id, @RequestParam("name") String name);


2.RESTFul风格的路径传参  url/id/name
    被调用的服务方 
    @GetMapping("/test1/{id}/{name}")
    public String test1(@PathVariable("id") Integer id, @PathVariable("name") String name){
        log.info("接收到的id为 {}, 接受的name为 {}", id, name);
        return "products API test";
    }

    feginclient中
    @GetMapping("/test1/{id}/{name}")
    public String test1(@PathVariable("id") Integer id, @PathVariable("name") String name);

2.对象的传递

    1.使用@RequestBody
    被调用的服务方 
    @PostMapping("/test2")
    public String test2(@RequestBody Product product){
        log.info("传参的product信息 {}", product);
        return "products API test2";
    }

    feginclient中
    @PostMapping("/test2")
    public String test2(@RequestBody Product product);

    2.使用@RequestPart
    form表单传递参数,其中含有文件上传的信息

3.数组和集合的传递

  数组
  被调用的服务方 
  @GetMapping("/test3")
    public String test3(@RequestParam("ids") String[] ids){
        for (String id : ids) {
            log.info("id {}", id);
        }
        return "product test3 API";
    }

    feginclient中
    @GetMapping("/test3")
    public String test3(@RequestParam("ids") String[] ids);

  集合
  使用集合传递数据,需要将集合作为一个对象的属性,再将数据封装在对象的属性集合中
  @Data
  public class ConllectionVO {
      private List<String> list;
  }

 @GetMapping("/test4")
    public String test4(ConllectionVO conllectionVO){
        conllectionVO.getList().forEach(id -> log.info("id {}", id));
        return "product test4 API";
    }

 @GetMapping("/test4")
 public String test4(@RequestParam("list") List<String> list);

list集合其实和数组的数据传递并没有什么太大的区别。只能通过querystring的方式传递值 ids=xxx&ids=xxx&ids=xxx
feignclient是一个伪HttpClient,并不能自动的识别参数传递,所以需要加注解

标签:传参,调用,name,OpenFeign,ids,public,GetMapping,id,String
来源: https://www.cnblogs.com/codegzy/p/15357885.html