如何在 micronaut 中使用拦截器添加 header

How to add header using interceptor in micronaut

我使用 micronaut 和 kotlin。所以我尝试添加 header 以使用拦截器请求其他服务。你能举个例子吗?

So I trying to add header to request to other service using interceptor. Can you give me example?

这是来自 https://docs.micronaut.io/latest/guide/index.html#clientFilter 的示例:

@Filter("/repos/**") 
class BintrayFilter implements HttpClientFilter {

    final String username;
    final String token;

    BintrayFilter(
            @Value("${bintray.username}") String username, 
            @Value("${bintray.token}") String token ) { 
        this.username = username;
        this.token = token;
    }

    @Override
    public Publisher<? extends HttpResponse<?>> doFilter(MutableHttpRequest<?> request, ClientFilterChain chain) {
        return chain.proceed(
                request.basicAuth(username, token) 
        );
    }
}

doFilter 方法中,您可以随心所欲地处理请求,包括向其中添加 headers。

编辑

问题表明正在使用 Kotlin。这是 Kotlin 的对应物,与上面的 url 相同:

@Filter("/repos/**") 
internal class BintrayFilter(
        @param:Value("${bintray.username}") val username: String, 
        @param:Value("${bintray.token}") val token: String) : HttpClientFilter {

    override fun doFilter(request: MutableHttpRequest<*>, chain: ClientFilterChain): Publisher<out HttpResponse<*>> {
        return chain.proceed(
                request.basicAuth(username, token) 
        )
    }
}