Swagger Codegen 生成器
如果默认的生成器配置不能满足您的需求,您可以使用各种选项来修改或创建新的模块或模板。
修改客户端库格式
不喜欢默认的 swagger 客户端语法?想要支持其他语言?没问题!Swagger Codegen 使用 jmustache 引擎处理 mustache 模板。您可以修改我们的模板或创建您自己的模板。
您可以查看 modules/swagger-codegen/src/main/resources/${your-language}
中的示例。要创建您自己的模板,请创建您自己的文件,并使用 -t
标志指定您的模板文件夹。它实际上就是这么简单。
制作自己的 codegen 模块
如果您正在使用一种新语言启动一个项目,并且没有看到您需要的内容,Swagger Codegen 可以帮助您创建一个项目来生成您自己的库
1java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar meta \2 -o output/myLibrary -n myClientCodegen -p com.my.company.codegen
这将在文件夹 output/myLibrary
中写入您开始所需的所有文件,包括一个 README.md
。修改和编译后,您可以使用 codegen 加载您的库,并使用您自己的自定义逻辑生成客户端。
然后,您可以使用 mvn package
在 output/myLibrary
文件夹中编译您的库,并像这样执行 codegen
1java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen
对于 Windows 用户,您需要在类路径中使用 ;
而不是 :
,例如
1java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar;modules/swagger-codegen-cli/target/swagger-codegen-cli.jar io.swagger.codegen.SwaggerCodegen
请注意,myClientCodegen
现在是一个选项,您可以使用通常的参数来生成您的库
1java -cp output/myLibrary/target/myClientCodegen-swagger-codegen-1.0.0.jar:modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \2 io.swagger.codegen.SwaggerCodegen generate -l myClientCodegen\3 -i https://petstore.swagger.io/v2/swagger.json \4 -o myClient
另请参阅 独立生成器开发。
从本地文件生成客户端
如果您不想调用您的服务器,您可以将 OpenAPI 规范文件保存到一个目录中,并将一个参数传递给代码生成器,如下所示
1-i ./modules/swagger-codegen/src/test/resources/2_0/petstore.json
非常适合从 Swagger Editor 在您的 ci 服务器上创建库……或者在飞机 ✈️ 上编码时。
忽略文件格式
Swagger Codegen 支持 .swagger-codegen-ignore
文件,类似于您可能已经熟悉的 .gitignore
或 .dockerignore
。
与 --skip-overwrite
标志相比,忽略文件可以更好地控制覆盖现有文件。使用忽略文件,您可以指定可以忽略的单个文件或目录。例如,如果您只想要生成的代码的子集,这会很有用。
示例
1# Swagger Codegen Ignore2# Lines beginning with a # are comments3
4# This should match build.sh located anywhere.5build.sh6
7# Matches build.sh in the root8/build.sh9
10# Exclude all recursively11docs/**12
13# Explicitly allow files excluded by other rules14!docs/UserApi.md15
16# Recursively exclude directories named Api17# You can't negate files below this directory.18src/**/Api/19
20# When this file is nested under /Api (excluded above),21# this rule is ignored because parent directory is excluded by previous rule.22!src/**/PetApiTests.cs23
24# Exclude a single, nested file explicitly25src/IO.Swagger.Test/Model/AnimalFarmTests.cs
.swagger-codegen-ignore
文件必须存在于输出目录的根目录中。
在首次代码生成时,您还可以传递 CLI 选项 --ignore-file-override=/path/to/ignore_file
,以便更好地控制生成的输出。请注意,这是一个完整的覆盖,并且在重新生成代码时将覆盖输出目录中的 .swagger-codegen-ignore
文件。
IntelliJ 通过 .ignore 插件 支持 .swagger-codegen-ignore
文件的编辑器。