You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为openapi-maven-generator-plugin生成的ApiClient传递凭证?

为OpenAPI生成的ApiClient配置Basic HTTP认证凭证

当然可以,有几种实用的方式给生成的ApiClient配置Basic认证凭证,适配你使用RestTemplate的场景:

方法一:直接为ApiClient的RestTemplate添加认证拦截器

通过给RestTemplate添加请求拦截器,让所有请求自动带上Basic认证头,无需手动重复设置:

import org.springframework.http.HttpHeaders;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

// 构造认证凭证
String username = "your-username";
String password = "your-password";
String credentials = username + ":" + password;
String encodedAuth = Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8));
String authHeader = "Basic " + encodedAuth;

// 初始化生成的API客户端
UsersApi usersApi = new UsersApi();
ApiClient apiClient = usersApi.getApiClient();

// 添加拦截器自动注入认证头
apiClient.getRestTemplate().getInterceptors().add((request, body, execution) -> {
    request.getHeaders().add(HttpHeaders.AUTHORIZATION, authHeader);
    return execution.execute(request, body);
});

// 调用API接口,自动携带认证信息
usersApi.getUserById(1L);

方法二:SpringBoot环境下自定义RestTemplate Bean(推荐)

在SpringBoot中,将配置好认证的RestTemplate注册为Bean,注入到ApiClient中,更符合依赖注入规范,还能通过配置文件管理凭证:

1. 配置RestTemplate Bean

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

@Configuration
public class ApiClientConfig {

    @Value("${external.api.username}")
    private String apiUsername;

    @Value("${external.api.password}")
    private String apiPassword;

    @Bean
    public RestTemplate basicAuthRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getInterceptors().add((request, body, execution) -> {
            String credentials = apiUsername + ":" + apiPassword;
            String encodedAuth = Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8));
            request.getHeaders().set(HttpHeaders.AUTHORIZATION, "Basic " + encodedAuth);
            return execution.execute(request, body);
        });
        return restTemplate;
    }
}

2. 注入并使用ApiClient

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;

@Service
public class UserService {

    @Autowired
    private RestTemplate basicAuthRestTemplate;

    public void fetchUser() {
        ApiClient apiClient = new ApiClient(basicAuthRestTemplate);
        UsersApi usersApi = new UsersApi(apiClient);
        // 调用接口自动携带认证信息
        usersApi.listUsers();
    }
}

方法三:利用生成的认证快捷方法(若支持)

部分版本的openapi-maven-generator-plugin会根据YAML中的BasicAuth配置,自动生成setUsername和setPassword方法,直接调用即可:

UsersApi usersApi = new UsersApi();
usersApi.getApiClient().setUsername("your-username");
usersApi.getApiClient().setPassword("your-password");

// 调用接口时,ApiClient会自动构造并添加Basic认证头
usersApi.createUser(new UserDto());

内容的提问来源于stack exchange,提问作者Ghassen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:27:31