zoukankan      html  css  js  c++  java
  • 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);
        }
    }


    客户端(消费者)

      Pom 文件

    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.0.2.RELEASE</version>
    </dependency>


    准备:已经配置注册到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);

    ---------------------
    作者:未完成交响曲
    来源:CSDN
    原文:https://blog.csdn.net/wk52525/article/details/79183113
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    SQL Server 2005 学习笔记之触发器简介[转]
    什么是BCD 码
    关于C# 中的Attribute 特性
    也谈Asp.net 中的身份验证
    SQL Server 2005 创建分区表
    使用SerialPort 对象实现串口拨号器通信[下]
    子角色权限的实现
    SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换
    TSQL 常用排名函数
    关于ASP.NET 将数据导出成Excel 的总结[中]
  • 原文地址:https://www.cnblogs.com/bruce1992/p/13847571.html
Copyright © 2011-2022 走看看