如何解决未发送 Openapi-generator-maven-plugin 身份验证查询参数
将 openapi-generator-maven-plugin
从 4.3.0 升级到 5.0.1 后,查询身份验证参数出现问题。我有一个 apiKey 查询参数,它曾经在 url 中发送。更新到5.0.1版本后,url中不再发送apiKey参数。
我注意到在生成的 ApiClient.java 中,方法 updateParamsForAuth 改变了位置。 现在不是在开始或 invodeAPI 方法(在生成查询参数之前)调用,而是在处理查询参数之后调用。
不知道该问题是否被提出,但看起来像是一个问题/倒退。
这是我的插件配置
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>5.0.1</version>
<executions>
<execution>
<id>GenerateRestClient</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>/definitions/application.yaml</inputSpec>
<generatorName>java</generatorName>
<generateApiDocumentation>false</generateApiDocumentation>
<configOptions>
<library>jersey2</library>
<dateLibrary>java8</dateLibrary>
<java8>true</java8>
<modelPackage>${client.package}.model</modelPackage>
<apiPackage>${client.package}.api</apiPackage>
<invokerPackage>${client.package}.api</invokerPackage>
<performBeanValidation>false</performBeanValidation>
<serializationLibrary>jackson</serializationLibrary>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
YAML(仅限安全部分)。
securitySchemes:
apiKey:
type: apiKey
name: apiKey
in: query
在 4.3.0 版本中。生成的 ApiClient.java
public <T> ApiResponse<T> invokeAPI(......) throws ApiException {
updateParamsForAuth(authNames,queryParams,headerParams,cookieParams);
....
if (queryParams != null) {
for (Pair queryParam : queryParams) {
if (queryParam.getValue() != null) {
target = target.queryParam(queryParam.getName(),escapeString(queryParam.getValue()));
}
}
}
...
在 5.0.1 版本中。生成的 ApiClient.java
public <T> ApiResponse<T> invokeAPI(......) throws ApiException {
....
if (queryParams != null) {
for (Pair queryParam : queryParams) {
if (queryParam.getValue() != null) {
target = target.queryParam(queryParam.getName(),escapeString(queryParam.getValue()));
}
}
}
...
// update different parameters (e.g. headers) for authentication
updateParamsForAuth(
authNames,allHeaderParams,cookieParams,serializeToString(body,formParams,contentType,isBodyNullable),method,target.getUri());
客户端是在带有 JDK 11 的 spring-boot 2.2.2.RELEASE 项目中生成的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。