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);
原文链接:https://blog.csdn.net/wk52525/article/details/79183113

SpringCloud使用feign时的复杂参数传递(转)的更多相关文章

  1. springcloud 实战 feign使用中遇到的相关问题

    springcloud 实战 feign使用中遇到的相关问题 1.使用feign客户端调用其他微服务时,session没有传递成功,sessionId不一样. /** * @author xbchen ...

  2. springcloud 之 feign的重复性调用 优化

    最近有一个springcloud的feign请求,用于获取坐标经纬度的信息,返回结果永远是固定不变的,所以考虑优化一下,不然每次转换几个坐标都要去请求feign,返回的所有坐标信息,数据量太大导致耗时 ...

  3. SpringCloud之Feign:REST客户端

    在Spring Cloud集群中,各个角色的通信基于REST服务,在调用服务时,需要使用REST客户端,常用,除了使用Spring自带的RestTemplate,也可使用另一个REST客户端:Feig ...

  4. 解决SpringCloud使用Feign跨服调用时header请求头中的信息丢失

    在使用SpringCloud进行Feign跨服调用时header请求头中的信息会丢失,是因为Feign是不会带上当前请求的Cookie信息和头信息的,这个时候就需要重写请求拦截. 1.需要重写Requ ...

  5. SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer);

    SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 第一种方法: 如果你 ...

  6. SpringCloud 在Feign上使用Hystrix(断路由)

    SpringCloud  在Feign上使用Hystrix(断路由) 第一步:由于Feign的起步依赖中已经引入了Hystrix的依赖,所以只需要开启Hystrix的功能,在properties文件中 ...

  7. SpringCloud(5)---Feign服务调用

    SpringCloud(5)---Feign服务调用 上一篇写了通过Ribbon进行服务调用,这篇其它都一样,唯一不一样的就是通过Feign进行服务调用. 注册中心和商品微服务不变,和上篇博客一样,具 ...

  8. SpringCloud之Feign负载均衡(四)

    整合Feign pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <arti ...

  9. SpringCloud+Eureka+Feign+Ribbon的简化搭建流程,加入熔断,网关和Redis缓存[2]

    目录 前提:本篇是基于 SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习[1] 的修改与拓展 1.修改consumer的CenterFeign.java,把返 ...

随机推荐

  1. Python面试-DB相关

    昨日回顾: 面试 Python综述 设计哲学 版本变迁及发展 GIL 内存管理及垃圾回收 并发并行 昨日作业一:Python是否存在内存泄露 作业二:过往的项目中有没有出现过性能问题? 作业三:什么是 ...

  2. 【AMAD】coconut -- 简单,优雅,pythonic的函数式编程语言

    动机 简介 个人评分 动机 作者的话: 我喜欢函数式编程,我认为函数式编程提供了一个更自然的方式来思考问题,并且代码也更加优雅,易读.不过如果你看过前20个最受欢迎的编程语言,你会发现没有一个式函数式 ...

  3. Pytorch修改ResNet模型全连接层进行直接训练

    之前在用预训练的ResNet的模型进行迁移训练时,是固定除最后一层的前面层权重,然后把全连接层输出改为自己需要的数目,进行最后一层的训练,那么现在假如想要只是把 最后一层的输出改一下,不需要加载前面层 ...

  4. 记一次 Vultr配置

    这里不想排版,因为心情复杂. 第一次搞这个VPS,真的是很气人,由于中英文的关系我一开始就误操作了,让VPS一直挂载着Ubuntu18.10,所以系统一直是在光盘的引导界面,这个问题知道我注册后的四个 ...

  5. (转) Asp.net中实现同一用户名不能同时登录

    最近找了一些单点登录的,发现了这篇文章,貌似还是可以实现的,先保存了.   Web 项目中经常遇到的问题就是同一用户名多次登录的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法: 将登录后的用 ...

  6. Spark中分布式使用HanLP(1.7.0)分词示例

    HanLP分词,如README中所说,如果没有特殊需求,可以通过maven配置,如果要添加自定义词典,需要下载“依赖jar包和用户字典". 分享某大神的示例经验: 是直接"java ...

  7. windows 安装 celery 避坑指南,看这篇就够了

  8. AcWing175电路维修

    这是一道在luogu的蓝题,在yxc大佬的讲解下AC掉了(百般调试) 首先这道题给了一个字符串矩阵,/ \表示相连哪两个节点,只可以走/ \所连接的两个点,但我们可以旋转每一个边,询问从1,1 走到 ...

  9. 从入门到自闭之Python名称空间

    名称空间: 内置空间:python解释器自带的一块空间 全局空间:py文件中顶格写的就是全局空间 局部空间:函数体中就是局部空间 加载顺序: 内置空间 全局空间 局部空间 # def func(): ...

  10. L2-013. 红色警报(并查集+无向图联通分量)

    战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ...