netflix feignを使用して、落ち着いたWebサービスを呼び出しています。パッチリクエストの場合、PATCHリクエストはサポートされていないようです。
原因:feign.RetryableException:無効なHTTPメソッド:PATCH実行PATCH https://projects.dev.xyz.com/projects/v1/users/ {uid}/projects/{guid} at feign .FeignException.errorExecuting(FeignException.Java:66)at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.Java:100)at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.Java:74)at feign.hystrix.HystrixInvocationHandler $ 1.run(HystrixInvocationHandler :54)com.netflix.hystrix.HystrixCommand $ 1.call(HystrixCommand.Java:294)で
誰かがspring-cloud-feignで同じ問題に遭遇した場合、fevenからのhttpClientの使用は、maven依存関係を追加するだけで実現できます。
<dependency>
<!-- Required to use PATCH -->
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>${feign.version}</version>
</dependency>
これは、feignのhttpClientを使用して解決できます。最初にモジュールをクラスパスに追加し、次にFeign.builder().client(new ApacheHttpClient())
を使用してオブジェクトを構築するときに構成します。これにより、PATCHリクエストのサポートが追加されます。
ドキュメントへのリンク: https://github.com/Netflix/feign/tree/master/httpclient
編集:Apacheのhttpクライアントをラップする偽のオブジェクトもあります ここにリンク
私も同じ問題に直面しましたが、feign-httpclient依存関係を追加し、リクエストにヘッダーX-HTTP-Method-Override:PATCHを追加することで解決できました。
<dependency>
<!-- Required to use PATCH -->
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>${feign.version}</version>
</dependency>
ヘッダーを追加する
@RequestHeader(value="X-HTTP-Method-Override", defaultValue="PATCH") String xHttpMethodOveride