问题描述
将 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 (将#修改为@)