gpt4 book ai didi

interceptor - 在 Quarkus 中,有没有办法在 REST 客户端调用上应用响应拦截器?

转载 作者:行者123 更新时间:2023-12-05 03:39:30 34 4
gpt4 key购买 nike

我有一个我需要使用的产品 REST API,它返回如下内容:
HTTP 200 正常
{ "return_code": "failure_x"}

我无法更改它,但我需要保持我的项目正常运行。

有没有我可以使用的 Quarkus REST 客户端响应拦截器
在我看来,拦截器是为我的 Controller 而不是为我的客户准备的。

我想拦截响应并将其修改为正确的 HTTP 代码,然后进行处理。

最佳答案

正如 karelss 在评论中指出的那样,您可以创建一个 ClientResponseFilter 来执行您想要的操作。

这样的过滤器可以通过以下方式注册:

  • @RegisterProvider(MyFilter.class) 在您的 JAX-RS 接口(interface)上
  • application.properties 中:
com.example.MyInterface/mp-rest/providers=com.example.MyFilter

另一种选择是创建自定义 ResponseExceptionMapper。您以与过滤器相同的方式注册它。这是示例异常映射器的样子:

package io.quarkus.rest.client.reactive.runtime;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;

import org.eclipse.microprofile.rest.client.ext.ResponseExceptionMapper;

public class DefaultMicroprofileRestClientExceptionMapper implements ResponseExceptionMapper {

public Throwable toThrowable(Response response) {
try {
response.bufferEntity();
} catch (Exception var3) {
}

return new WebApplicationException("Unknown error, status code " + response.getStatus(), response);
}

public boolean handles(int status, MultivaluedMap headers) {
return status >= 400;
}

public int getPriority() {
return 5000;
}
}

有关异常映射器的更多信息,请查看 MicroProfile Rest Client 规范:https://download.eclipse.org/microprofile/microprofile-rest-client-2.0/microprofile-rest-client-spec-2.0.html#_responseexceptionmapper

关于interceptor - 在 Quarkus 中,有没有办法在 REST 客户端调用上应用响应拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68557473/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com