Недопустимый метод HTTP: PATCH> выполнение PATCH: вызвано: feign.RetryableException:

мы используем netflix feign для вызова спокойного веб-сервиса. Для запроса патча похоже, что запрос PATCH не поддерживается.

Вызвано: feign.RetryableException: Недействительный HTTP-метод: PATCH выполнение PATCH https://projects.dev.xyz.com/projects/v1/users/ {uid}/projects/{guid}       at feign.FeignException.errorExecuting(FeignException.java:66) в feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:100)       в feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:74)       в feign.hystrix.HystrixInvocationHandler $1.run(HystrixInvocationHandler.java:54)       в com.netflix.hystrix.HystrixCommand $1.call(HystrixCommand.java:294)

Ответ 1

если кто-то сталкивается с той же проблемой с spring -cloud-feign, использование httpClient из feign может быть достигнуто путем добавления зависимости maven:

    <dependency>
        <!-- Required to use PATCH -->
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-httpclient</artifactId>
        <version>${feign.version}</version>
    </dependency>

Ответ 2

Вы можете решить это, используя httpClient из feign. Вы хотите сначала добавить модуль в свой путь к классам, а затем настроить его при создании объекта с помощью Feign.builder().client(new ApacheHttpClient()). Это добавляет поддержку запросов PATCH.

Ссылка на Doc: https://github.com/Netflix/feign/tree/master/httpclient

РЕДАКТИРОВАТЬ: есть также объект фальшивки, который обертывает http-клиент apache, здесь

Ответ 3

Я также столкнулся с той же проблемой, но сумел решить ее, добавив зависимость 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