ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenFeign调用服务并传参

2021-09-30 19:03:37  阅读:267  来源: 互联网

标签:传参 调用 name OpenFeign ids public GetMapping id String


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有