是否可以在ClientHeadersFactory中获取出站客户端请求信息?
Is it possible to get outbound client request information in ClientHeadersFactory?
我正在编写具有以下层的应用程序:
External Client (e.g. browser) -> My Service -> External API
我有一个 ClientHeadersFactory
,它将一些 headers 添加到我在 My Service
中用于调用 External API
的 REST 客户端。我想知道是否可以从 My Service
到 External API
中的 REST 客户端获取有关客户端请求的信息?例如,我想知道我的 REST 客户端正在调用的 HTTP 方法和端点。这将影响我添加的 headers。
谢谢!
ClientHeadersFactory
不适用于需要查看请求的用例。
要根据请求添加headers,可以使用ClientRequestFilter
.
请注意,您可以将 ClientHeadersFactory
与过滤器混合使用。
例如,您可以这样做:
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import java.io.IOException;
public class MyFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
if ("POST".equalsIgnoreCase(requestContext.getMethod())) {
requestContext.getHeaders().add("MyHeader", "POST-specific header");
}
}
}
您可以为单个客户端注册这样的过滤器,方法是使用 @RegisterProvider(MyFilter.class)
注释客户端,或者,如果您使用 quarkus-rest-client-reactive
,则为您的应用程序中的所有客户端添加 @Provider
注释 到过滤器 .
我正在编写具有以下层的应用程序:
External Client (e.g. browser) -> My Service -> External API
我有一个 ClientHeadersFactory
,它将一些 headers 添加到我在 My Service
中用于调用 External API
的 REST 客户端。我想知道是否可以从 My Service
到 External API
中的 REST 客户端获取有关客户端请求的信息?例如,我想知道我的 REST 客户端正在调用的 HTTP 方法和端点。这将影响我添加的 headers。
谢谢!
ClientHeadersFactory
不适用于需要查看请求的用例。
要根据请求添加headers,可以使用ClientRequestFilter
.
请注意,您可以将 ClientHeadersFactory
与过滤器混合使用。
例如,您可以这样做:
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import java.io.IOException;
public class MyFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
if ("POST".equalsIgnoreCase(requestContext.getMethod())) {
requestContext.getHeaders().add("MyHeader", "POST-specific header");
}
}
}
您可以为单个客户端注册这样的过滤器,方法是使用 @RegisterProvider(MyFilter.class)
注释客户端,或者,如果您使用 quarkus-rest-client-reactive
,则为您的应用程序中的所有客户端添加 @Provider
注释 到过滤器 .