web-dev-qa-db-ja.com

無効なHTTPメソッド:PATCH> PATCHの実行:原因:feign.RetryableException:

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)で

19
user2775185

誰かが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>
14
Dirk

これは、feignのhttpClientを使用して解決できます。最初にモジュールをクラスパスに追加し、次にFeign.builder().client(new ApacheHttpClient())を使用してオブジェクトを構築するときに構成します。これにより、PATCHリクエストのサポートが追加されます。

ドキュメントへのリンク: https://github.com/Netflix/feign/tree/master/httpclient

編集:Apacheのhttpクライアントをラップする偽のオブジェクトもあります ここにリンク

10
Adam Karpowich

私も同じ問題に直面しましたが、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
1
Soumyajit Swain