Quarkus 中的 React 休息客户端 headers 注入
Reactive rest client headers injection in Quarkus
我正在按照新 quarkus-resteasy-reactive-jackson
扩展的指南在生产中部署的现有 Quarkus 应用程序中使用它。
在 Custom headers support
部分中,它引入了 ClientHeadersFactory
接口以允许在请求中注入 headers,但您被迫 return 同步响应。不能使用 Uni<MultivaluedMap<String, String>>
,这是我的情况所需要的,因为我需要在 header 中添加一个令牌,并且这个令牌是通过对另一个 return一个Uni<Token>
.
我如何在新的实现中实现这一点?如果不可能,是否有解决方法?
无法在 Quarkus 2 的 ClientHeadersFactory
中使用 Uni<MultivaluedMap<...>>
。2.x(和旧版本)。我们可能会在不久的将来添加这样的功能。
目前,您可以直接@HeaderParam
。您的代码可能如下所示:
Uni<String> token = tokenService.getToken();
token.onItem().transformToUni(tokenValue -> client.doTheCall(tokenValue));
客户端界面类似于:
@Path("/")
public interface MyClient {
@GET
Uni<Foo> doTheCall(@HeaderParam("token") String tokenValue);
}
我正在按照新 quarkus-resteasy-reactive-jackson
扩展的指南在生产中部署的现有 Quarkus 应用程序中使用它。
在 Custom headers support
部分中,它引入了 ClientHeadersFactory
接口以允许在请求中注入 headers,但您被迫 return 同步响应。不能使用 Uni<MultivaluedMap<String, String>>
,这是我的情况所需要的,因为我需要在 header 中添加一个令牌,并且这个令牌是通过对另一个 return一个Uni<Token>
.
我如何在新的实现中实现这一点?如果不可能,是否有解决方法?
无法在 Quarkus 2 的 ClientHeadersFactory
中使用 Uni<MultivaluedMap<...>>
。2.x(和旧版本)。我们可能会在不久的将来添加这样的功能。
目前,您可以直接@HeaderParam
。您的代码可能如下所示:
Uni<String> token = tokenService.getToken();
token.onItem().transformToUni(tokenValue -> client.doTheCall(tokenValue));
客户端界面类似于:
@Path("/")
public interface MyClient {
@GET
Uni<Foo> doTheCall(@HeaderParam("token") String tokenValue);
}