初期ソリューション:
いくつかの調査の後、私はクライアントAPIの機能の一部として、URIパラメータを生成するためのswagger-codegen 2.2.3でのサポートがないことを認識するようになりました。
しかし のswagger-codegen-maven-plugin構成のオプションがあり、「templateDirectory - 口ひげテンプレートのディレクトリー」というフォルダ内のテンプレートを取り、同じ名前を持つ既存を上書きします口ひげのテンプレートを含むフォルダへのパスを与えるためには、 。
例:
<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>
そしてカスタムテンプレートフォルダ内の、追加の "URI basePathを" パラメータを使用して独自のapi.mustacheファイルを置く:
...
{{#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テンプレートファイルを用意して変更してくださいing。 上記の例では、java.libraries.feign/api.mustacheファイルを変更(オーバーライド)しています。これは、これもMy Pluginが設定されているファイルであるためです(例のように)。
これを取得するには、テンプレートとジェネレーターの両方を変更する必要があります。これは言語の一部であるため、gignubの問題をfeignジェネレーターの改善または提案として開くことができます。まず、yaml内のURIであるパラメータを区別することができなければなりません。そうすればジェネレータで異なる構文解析が可能になり、テンプレート内に正しく表示され、生成されたコードが正しく表示されます。 – moondaisy
ありがとう@moondaisy!私はテンプレートを変更する必要がありますが、必ずしもジェネレータを変更する必要はありません。私は構成を使用して、新しいテンプレートを使いこなせるようにすることができます。いずれにしても、あなたが示唆しているように、このような拡張を提案します:) – dorony
これはうまくいきますが、すべてのインターフェイスのすべてのメソッドに 'URI'パラメータを入れます。ジェネレータ。あなたが解決策を見つけてうれしい! – moondaisy