OpenAPI 客户端生成器 Java - header 每次调用

OpenAPI client generator Java - header per call

我有一个 API 服务于 public 和私有资源。用户在调用私有资源时需要通过授权 header。另外授权header可以轮换。

如何从 OpenAPI 规范文件中生成的 Java 客户端为每个出站 RPC 指定 HTTP header?

我尝试了多个库选项,似乎都能够在客户端初始化时指定一组 header。 (但不是每次调用,或者不轮换)

根据生成器,您可以使用拦截器来实现此目的,例如使用 OkHttpClient:

final okhttp3.Interceptor authTokenInterceptor = chain -> {
        Request request = chain.request();
        Request.Builder requestBuilder = request.newBuilder();
        if(request.header(AUTHORIZATION) == null) {
            // needs bearer token, only if not already present
            requestBuilder.addHeader(AUTHORIZATION,"Bearer " + tokenSuppliedByAFunction());
        }
        
        return chain.proceed(requestBuilder.build());
    };

okhttp3.OKHttpClient client = new OkHttpClient.Builder()
    .addInterceptor(authTokenInterceptor)
    .build();

虽然这是在客户端创建时提供的,但您可以编写 tokenSuppliedByAFunction() 来动态添加所需的令牌。