我们正在使用netflix feign来调用restful web服务。对于补丁请求,它看起来不支持PATCH请求。
引起:feign.RetryableException:无效的HTTP方法:PATCH 执行PATCH https://projects.dev.xyz.com/projects/v1/users/ {UID} /项目/ {GUID} at feign.FeignException.errorExecuting(FeignException.java:66)at 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)
答案 0 :(得分:9)
如果某人遇到与 spring-cloud-feign 相同的问题,可以通过添加maven依赖项来实现使用feign中的httpClient:
<dependency>
<!-- Required to use PATCH -->
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>${feign.version}</version>
</dependency>
答案 1 :(得分:8)
您可以使用feign中的httpClient来解决此问题。您希望首先将模块添加到类路径中,然后在构建对象时对其进行配置
Feign.builder().client(new ApacheHttpClient())
。这增加了对PATCH请求的支持。
链接到文档:https://github.com/Netflix/feign/tree/master/httpclient
编辑:还有一个假装对象包装了apache的http客户端,link here
答案 2 :(得分:1)
我也遇到了同样的问题,但是设法通过添加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
答案 3 :(得分:0)
如果您使用 y_type, y_true, y_pred, multioutput = _check_reg_targets(
y_true, y_pred, multioutput)
check_consistent_length(y_true, y_pred, sample_weight)
output_errors = np.average((y_true - y_pred) ** 2, axis=0,
weights=sample_weight)
if not squared:
output_errors = np.sqrt(output_errors)
if isinstance(multioutput, str):
if multioutput == 'raw_values':
return output_errors
elif multioutput == 'uniform_average':
# pass None as weights to np.average: uniform mean
multioutput = None
return np.average(output_errors, weights=multioutput)
并且遇到补丁请求问题,那么您可以在下面执行(kotlin):
添加这个依赖
output_errors = np.average((y_true - y_pred) ** 2, axis=0,
weights=sample_weight)
创建下面的配置类
implementation("org.springframework.cloud:spring-cloud-starter-openfeign")
并将此配置添加到您的客户端(如果您希望这是每个 feign 客户端的通用配置,那么您还可以为 implementation("io.github.openfeign:feign-okhttp:10.2.0")
添加 @Configuration)。
class FeignOkHttpConfiguration {
@Bean
fun client(): OkHttpClient {
return OkHttpClient()
}
}