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);
    }

總得來說 就是添加一個包,一個注解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM