1. 문제 분류 :
예외 : org.springframework.web.httprequestmethodnotsupportedException : 요청 방법 '포스트'지원되지 않음
Feign이 최종적으로 HTTP 요청을 실행할 때이 메소드는 게시물로 간주되지만 Feign 클라이언트는 requestMethod.get 또는 @GetMapping을 정의하여 오류가 발생합니다.
그렇다면 Feign은 왜이 방법이 게시되었다고 생각합니까?
소스 코드 추적 :
1. Feignclient 주석을 항목으로 살펴 보겠습니다.
2. 스프링 클라우드의 일관된 스타일에 따라, 우리는 feignautoconfiguration 클래스를 열어 구성 로직을 볼 수 있습니다.
위 그림의 빨간색 상자의 주석을보십시오.이 클래스는 Iloadbalancer가 없을 때 트리거됩니다. 우리 프로젝트는 리본을 활성화하여 존재해야합니다. 주석을 다시보십시오.로드 밸런싱 리본 클라이언트는이 클래스를 구성하려면 FeignribbonclientAutoconfiguration을 사용해야합니다. 가 ~
위의 그림에서 볼 수 있듯이 빨간색 상자 주석을보십시오. 상단에서 하단으로 가져 오는 순서대로 : httpclientFleignloadBalanctConfiguration> OKHTTPFEIGNLOADDBALKENDCONFIGURATION> DEFAULTFEIGNLOADENCENCEDCONFIGURATION, 해당 하위 HTTP 도구 : httppclient> OKHTTP> HTTPURLConnection.
HTTP 프로토콜 정의에 따르면 @requestBody+ requestMethod.get이 지원됩니다. 따라서 툴킷의 다른 구현에 따라 다릅니다. 소스 코드를 확인하면 OKHTTP 및 HTTPURLConnection이 지원되지 않으며 (오류 가보고됨) HTTPPClient 만 지원합니다. (기본 httpurlConnection은 오류를보고합니다)
우리는 httpclient 만 @requestbody+requestmethod.get을 지원하므로 조건을 충족하고 httpclientflientfeignloadbalancedconfiguration으로 이동해야합니다. 소스 코드를 확인하십시오.
apachehttpclient 클래스는 클래스 경로 아래에 존재한다는 것을 알 수 있습니다. POM을 추가합시다.
<pectionency> <groupid> io.github.openfeign </groupid> <artifactid> feign-httpclient </artifactid> </fectionency>
마지막으로, feign-httpclient-9.5.0.jar 패키지가로드되어 Apachehttpclient.class가 있음을 발견했습니다. 클릭하여 실제로 HTTPPCLIENT인지 확인하십시오.
따라서 POM은 feign-httpclient를 소개합니다-》 apachehttpclient.class-》 httpclientfeignloadbalancedconfiguration으로 이동-》 httpclient를 요청할 때 @replication @requestbody+ requestmethod.get.
2. 해결책 :
POM에 소개되었습니다
<pectionency> <groupid> io.github.openfeign </groupid> <artifactid> feign-httpclient </artifactid> </fectionency>
Maven이 업데이트 된 후 프로젝트에 Feign-HttpClient-9.5.0.jar 패키지가 있는지 확인하십시오.
요약
위는 편집자가 소개 한 Spring Cloud Feign에 대한 해결책입니다. Spring Cloud Feign의 오류에 대한 솔루션은 @requestbody+ requestmethod.get을 지원하지 않습니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!