Python 官方文档:入门教程 => 点击学习
需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果 传递方式一:传递的都是基本数据类型 re
需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果
restful风格参数,用@PathVariable写着走就行了
不使用restful风格,直接用@RequestParam声明参数之间的对应关系。
1.使用restful风格的参数要用@Pathvarible声明参数对应关系,@Pathvariable用于非字符串参数。
2.不适用restful风格的字符串参数用@Requestparam,
3.对象必须用@RequestBody注解声明
默认情况下,Feign会将标有@RequestParam注解的参数转换成字符串添加到URL中,将没有注解的参数通过Jackson转换成JSON放到请求体中。
注意,如果在@RequetMapping中的method将请求方式指定为POST,那么所有未标注解的参数将会被忽略
最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意:
写了一个简单案例,同时传输一个对象和一个字符串作为请求参数,主要关注参数的声明,其余比如eureka和feign的依赖和配置和后续使用相关的知识请另行查阅。仅供参考:
准备:
逻辑:ItemController接收参数,调用service层,service中为商品Item对象添加详情desc,然后调用dao保存Item对象,返回Result结果封装对象
@RestController
public class ItemController {
@Autowired
private ItemService itemService;
@RequestMapping("/item/save")
public Result addItem(@RequestBody Item item, @RequestParam("desc") String desc){
return itemService.addItem(item, desc);
}
}
准备:已经配置注册到eureka
逻辑:
声明ItemFeignClient调用eureka上名为"item-service"的服务,返回Result对象
使用Post请求,传递两个参数:
TbItem对象,使用@RequestBody来声明
String字符串,使用@RequestParam(“xxx”)来声明
@FeignClient("item-service")
public interface ItemFeignClient {
@RequestMapping(value = "/item/save",method = RequestMethod.POST)
Result addItem(@RequestBody TbItem item, @RequestParam("desc") String desc);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: feign实现传递参数的三种方式小结
本文链接: https://lsjlt.com/news/129094.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0