跳到內容

Swagger Codegen 產生器

如果預設產生器設定不符合您的需求,您可以使用各種選項來修改或建立新的模組或範本。

修改客戶端程式庫格式

不喜歡預設的 swagger 客戶端語法嗎?想要支援不同的語言嗎?沒問題!Swagger Codegen 使用 jmustache 引擎處理 mustache 範本。您可以修改我們的範本或製作自己的範本。

您可以查看 modules/swagger-codegen/src/main/resources/${your-language} 以取得範例。若要製作您自己的範本,請建立您自己的檔案,並使用 -t 旗標來指定您的範本資料夾。它實際上就是這麼容易。

製作您自己的程式碼產生模組

如果您正在使用新的語言啟動專案,並且沒有看到您需要的內容,Swagger Codegen 可以協助您建立專案以產生您自己的程式庫

終端機視窗
1
java -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。修改和編譯後,您可以使用程式碼產生器載入您的程式庫,並使用您自己的自訂邏輯產生客戶端。

然後,您可以使用 mvn packageoutput/myLibrary 資料夾中編譯您的程式庫,並執行程式碼產生器,如下所示

終端機視窗
1
java -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 使用者,您需要在類別路徑中使用 ; 而不是 :,例如

終端機視窗
1
java -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 是一個選項,您可以使用常用的引數來產生您的程式庫

終端機視窗
1
java -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 編輯器在您的 ci 伺服器上建立程式庫…或在飛機 ✈️ 上編碼時建立。

忽略檔案格式

Swagger Codegen 支援 .swagger-codegen-ignore 檔案,類似於您可能已經熟悉的 .gitignore.dockerignore

--skip-overwrite 旗標相比,忽略檔案可以更好地控制覆寫現有檔案。使用忽略檔案,您可以指定可以忽略的個別檔案或目錄。如果您只需要產生程式碼的子集,這會很有用。

範例

終端機視窗
1
# Swagger Codegen Ignore
2
# Lines beginning with a # are comments
3
4
# This should match build.sh located anywhere.
5
build.sh
6
7
# Matches build.sh in the root
8
/build.sh
9
10
# Exclude all recursively
11
docs/**
12
13
# Explicitly allow files excluded by other rules
14
!docs/UserApi.md
15
16
# Recursively exclude directories named Api
17
# You can't negate files below this directory.
18
src/**/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.cs
23
24
# Exclude a single, nested file explicitly
25
src/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 檔案的編輯器支援。