我是靠谱客的博主 烂漫小甜瓜,最近开发中收集的这篇文章主要介绍SpringCloud使用feign时的复杂参数传递,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Feign传参注意


 最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意:


 1. 当参数比较复杂时,feign即使声明为get请求也会强行使用post请求

 2. 不支持@GetMapping类似注解声明请求,需使用@RequestMapping(value = "url",method = RequestMethod.GET)

 3. 使用@RequestParam注解时必须要在后面加上参数名


 写了一个简单案例,同时传输一个对象和一个字符串作为请求参数,主要关注参数的声明,其余比如eureka和feign的依赖和配置和后续使用相关的知识请另行查阅。仅供参考:


服务端(生产者)


准备:
 1. 已经配置将服务注册在eureka,服务名为“item-service”
2. service层和dao层已经实现好了

逻辑:ItemController接收参数,调用service层,service中为商品Item对象添加详情desc,然后调用dao保存Item对象,返回Result结果封装对象

@RestController
public class ItemController {

    @Autowired
    private ItemService itemService;

    /**
     * 添加
     * @param item
     * @param desc
     * @return
     */
    @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请求,传递两个参数:
  1. TbItem对象,使用@RequestBody来声明
  2. String字符串,使用@RequestParam("xxx")来声明
@FeignClient("item-service")
public interface ItemFeignClient {

    /**
     * 添加
     * @param item
     * @param desc
     * @return
     */
    @RequestMapping(value = "/item/save",method = RequestMethod.POST)
    Result addItem(@RequestBody TbItem item, @RequestParam("desc") String desc); 



最后

以上就是烂漫小甜瓜为你收集整理的SpringCloud使用feign时的复杂参数传递的全部内容,希望文章能够帮你解决SpringCloud使用feign时的复杂参数传递所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部