是否可以在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 ServiceExternal 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 注释 到过滤器 .