未发送 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 (将#修改为@)