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