初步解决方案:
经过一番调查,我意识到swagger-codegen 2.2.3不支持生成 URI 参数作为客户端 API 函数的一部分。
但是在“templateDirectory - 带有胡子模板的目录”的swagger-codegen-maven-plugin配置中有一个选项,用于提供包含胡子模板的文件夹的路径,该文件夹将采用该文件夹中的模板并覆盖现有的相同姓名。
例子:
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<executions>
<execution>
<id>my-project-api-client-kit</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.build.directory}/my-project-api.yaml</inputSpec>
<language>java</language>
<configOptions>
<dateLibrary>java8</dateLibrary>
<sourceFolder>src/main/java</sourceFolder>
</configOptions>
<modelPackage>my.project.ck.resources.models</modelPackage>
<apiPackage>my.project.ck.resources.interfaces</apiPackage>
<library>feign</library>
<templateDirectory>/myTemplateFolder/</templateDirectory>
</configuration>
</execution>
</executions>
</plugin>
在自定义模板文件夹中,放置您自己的 api.mustache 文件和附加的“URI basePath”参数:
...
{{#returnType}}{{{returnType}}} {{/returnType}}{{^returnType}}void {{/returnType}}{{nickname}}(URI basePath, {{#allParams}}{{^isBodyParam}}{{^legacyDates}}@Param("{{paramName}}") {{/legacyDates}}{{#legacyDates}}@Param(value="{{paramName}}", expander=ParamExpander.class) {{/legacyDates}}{{/isBodyParam}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});
...
注意:
Swagger 提供了很多模板供各种用途使用,请务必根据您使用的情况获取并修改正确的 api.mustache 模板文件。在上面的示例中,我修改(并覆盖)了 java.libraries.feign/api.mustache 文件,因为这也是我的插件配置的文件(如示例中所示)。