1。問題の並べ替え:
例外: org.springframework.web.httprequestmethodnotsupportedexception:リクエストメソッド「投稿」はサポートされていません
Feignが最終的にHTTPリクエストを実行すると、このメソッドは投稿と見なされますが、FeignクライアントはRequestMethod.getまたは@getMappingを定義し、エラーを引き起こします。
では、なぜこの方法はこの方法が投稿されていると考えているのでしょうか?
ソースコードトラッキング:
1. feignclientアノテーションをエントリとして見てみましょう。
2。スプリングクラウドの一貫したスタイルによると、feignautoconfigurationクラスを開き、構成ロジックを確認します。
上の写真の赤い箱の注釈を見てください:このクラスは、iloadbalancerがいないときにトリガーされます。私たちのプロジェクトはリボンを有効にしているため、存在する必要があります。コメントをもう一度見てください:ロードバランシングリボンクライアントは、このクラスを構成するためにFeignRibbonClientAutoconfigurationを使用する必要があります。行く〜
上の写真に示すように、赤いボックスのコメントを見てください:上から下にインポートする順序で:httpclientfeignloadbalancedconfiguration> okhttpfeignloadbalencedconfiguration> defaultfeignloadbalancedconfiguration、対応する基礎となるhttpツール: httppclient> okhttp> httpurlconnection
HTTPプロトコルの定義によれば、 @requestbody+ requestmethod.getがサポートされています。そのため、ツールキットのさまざまな実装に依存します。ソースコードを確認すると、okhttpとhttpurlconnectionがサポートされていないことがわかりました(エラーが報告されています)、httppclientのみがサポートしています。 (デフォルトのhttpurlconnectionはエラーを報告します)
httpclientのみが @requestbody+requestmethod.getをサポートしていることを知っているため、条件を満たしてhttpclientfeignloadbalencedconfigurationにアクセスする必要があります。ソースコードをご覧ください:
apachehttpclientクラスがclasspathの下に存在することがわかります。 POMを追加しましょう:
<Dependency> groupId> io.github.openfeign </groupid> <artifactid> feign-httpclient </artifactid> </dependency>
最後に、fign-httpclient-9.5.0.jarパッケージがロードされ、開いてapachehttpclient.classがあることがわかりました。クリックして、実際にはhttppclientであったことを確認してください。
したがって、 POMはfeign-httpclientを導入します - 》 apachehttpclient.class-httpclientfeignloadbalanceconconfigurationに移動します - リクエストするとき、httpclient-
2。解決策:
POMで導入されました
<Dependency> groupId> io.github.openfeign </groupid> <artifactid> feign-httpclient </artifactid> </dependency>
Mavenが更新された後、Feign-HttpClient-9.5.0.Jarパッケージがプロジェクトに存在するかどうかを確認してください。
要約します
上記は、編集者があなたに紹介したSpring Cloud feignの解決策です。 Spring Cloud Feignのエラーの解決策は、 @requestbody+ requestmethod.getをサポートしていません。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!