spring cloud feignは@Request Body+Request Method.GETエラーの解決方法をサポートしていません。


1.問題整理:
異常:org.springframe ebook.web.HttpRequest Method Supported Exception:Request method'POST'not supported
明らかに最終feignがhttp要求を実行する時にこの方法をPOSTとして認定しましたが、feign clientではRequest Method.GETまたは@Get Mappingが定義されています。衝突によってエラーが発生しました。
なぜfeignはこの方法をポストだと思っていますか?
ソースの追跡:
1.feign Cientの注釈を入り口として見ます。

2.spring cloudの一貫した風格によって、Feign AutoConfigrationという類を開けて構成ロジックを見ます。

上の図の赤い枠の中の表示を見てください。この類はILadBalancerが存在しない時にトリガします。私達のプロジェクトはRibbonを開けました。だから必ず存在します。go~

上から下へ導入する順番で、HttpClient Feign LoadBalancdConfigration>OkHttpFeign LoadBalancdConfigration>Default Feign LoadBalancdConfigrationを参照してください。
http契約によると、@Request Body+Request Method.GETをサポートすると定義されていますが、具体的にはツールバッグの実現の違いを見なければなりません。ソースを調べたら、okhttpとHttpURLConnectはサポートしていません。httpclientだけがサポートしています。デフォルトではHttpURLConnectionを歩くとエラーが発生します。)
私達はhttpclientだけが@Request Body+Request Method.GETをサポートしていることを知っています。だから私達は条件を満たしてHttp Client Feign LoadBalanced Configrationに行かなければなりません。ソースを見てください。

このように、クラスパスを満たすとApachattpClientクラスがあります。私たちはpomに追加します。

<dependency>
   <groupId>io.github.openfeign</groupId>
   <artifactId>feign-httpclient</artifactId>
 </dependency>
最終的にfeign-httpclient-9.5.0.jarのカバンをロードしました。開けて見ると、中にはApachattpClient.classがあります。ポイントを入れて見ると、実はhttpclientです。

だから、pomにfeign-httpclientを導入しました。クラスのパスの下にApachepClient.classがあります。」Http Clint Feign LoadBalanced Configrationを歩いてください。要求時にHttpClientを走ります。@Request Body+Request Method.GETをサポートします。
2.解決方法:
 pomに導入する

<dependency>
   <groupId>io.github.openfeign</groupId>
   <artifactId>feign-httpclient</artifactId>
 </dependency>
maven更新後、プロジェクトにfeign-httpclient-9.5.0.jarパッケージが存在しているかどうかを確認します。
締め括りをつける
以上は小编でご绍介したspring cloud feignが@Request Body+Request Method.GETエラーの解决方法です。皆様のご迷惑をおかけしましたら、メッセージをください。ここでも私たちのサイトを応援してくれてありがとうございます。