zoukankan      html  css  js  c++  java
  • Feign调用,get请求,参数为对象, 解决请求对象以及参数值为null

    请求参数过多,所以包装成一个请求对象

    服务端:

       @GetMapping(value = "/readInfos")
        public List<ExctractInfoVO> readHotels(Search search){
            return this.service.readInfos(search);
        }

    API 

    @FeignClient(name = "server")//服务名
    public interface Server {
        
         @GetMapping(value = "/XXX/XXX/XXXX/readHotels", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public List<ExctractInfoVO> readInfos(Search search);
    
    
    
    }

    客户端

    @Service
    public class ServiceImpl implements Service{
    
        @Resource
        Server server;
        
        @Override
        public List<SearchResult> readInfos(Search search){

         Double bd09Lon1 = hotelSearch.getBd09Lon1();
         Double bd09Lat1 = hotelSearch.getBd09Lat1();
         hotelSearch = getLimit(hotelSearch, bd09Lon1, bd09Lat1, distance);

            List<ExctractInfoVO> list = server.readInfos(search);

    
        }
    
    }

    运行报错

    400:Request method 'POST' not supported

    上网查了一下  说了一堆源码的东西,结果就是少了一个包, 在服务端添加包

         <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-httpclient</artifactId>
            </dependency>

    继续运行虽然没有报错但是数据没有收到

    请求

     在客户端断点

     服务端断点

    然后各种资料翻看,只是在服务端上面加个@RequestBody, 完美解决,虽然不知道会不会有bug 但是至少现在是解决的了

    @GetMapping(value = "/readInfos", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public List<ExctractInfoVO> readInfos(@RequestBody  Search search){
            return this.service.readInfos(search);
        }

    总得来说 就是添加一个包,一个注解

  • 相关阅读:
    编码和字符集
    【机器学习】模型泛化
    asp.net GridView控件的列属性
    asp.net截取指定长度的字符串内容
    asp.net 对数据库表增加,删除,编辑更新修改
    asp.net 链接数据库ADO.NET
    常用正则表达式 验证电子邮件网址邮政编码等
    ASP.NET获取文件的相关知识
    C#获取picturebox图片路径
    C# dataGridView根据数据调整列宽
  • 原文地址:https://www.cnblogs.com/Cassie-wang/p/11690913.html
Copyright © 2011-2022 走看看