跳至內容

Swagger Codegen 產生器設定

自訂程式碼產生器不只是建立或修改範本,還有其他不同的層面。每種語言都有一個支援的設定檔,用於處理不同的類型對應等等。

終端機視窗
1
$ ls -1 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/
2
AbstractJavaJAXRSServerCodegen.java
3
AbstractTypeScriptClientCodegen.java
4
... (results omitted)
5
TypeScriptAngularClientCodegen.java
6
TypeScriptNodeClientCodegen.java

這些檔案的每一個都會建立合理的預設值,因此您可以快速開始執行。但是,如果您想要設定套件名稱、前綴、模型資料夾等等,您可以使用 json 設定檔來傳遞這些值。

終端機視窗
1
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
2
-i https://petstore.swagger.io/v2/swagger.json \
3
-l java \
4
-o samples/client/petstore/java \
5
-c path/to/config.json

並且 config.json 包含以下範例

1
{
2
"apiPackage" : "petstore"
3
}

每種語言支援的設定選項可能會有所不同。執行 config-help -l {lang} 將會顯示可用的選項。這些選項是透過設定檔 (例如 config.json) 或透過傳遞 java -jar swagger-codegen-cli.jar -D{optionName}={optionValue} 來套用

如果 -D{optionName} 無效,請開啟 工單,我們會進行調查。

終端機視窗
1
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l java

輸出

1
CONFIG OPTIONS
2
modelPackage
3
package for generated models
4
5
apiPackage
6
package for generated api classes
7
...... (results omitted)
8
library
9
library template (sub-template) to use:
10
jersey1 - HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2
11
jersey2 - HTTP client: Jersey client 2.6
12
feign - HTTP client: Netflix Feign 8.1.1. JSON processing: Jackson 2.6.3
13
okhttp-gson (default) - HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1
14
retrofit - HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1 (Retrofit 1.9.0)
15
retrofit2 - HTTP client: OkHttp 2.5.0. JSON processing: Gson 2.4 (Retrofit 2.0.0-beta2)
16
google-api-client - HTTP client: google-api-client 1.23.0. JSON processing: Jackson 2.8.9
17
rest-assured - HTTP client: rest-assured : 3.1.0. JSON processing: Gson 2.6.1. Only for Java8

您的 Java 設定檔可以看起來像這樣

1
{
2
"groupId": "com.my.company",
3
"artifactId": "MyClient",
4
"artifactVersion": "1.2.0",
5
"library": "feign"
6
}

對於所有未指定的選項,將會使用預設值。

覆寫預設選項的另一種方式是擴充特定語言的設定類別。例如,若要變更 Objective-C 產生檔案的前綴,只需子類別化 ObjcClientCodegen.java

1
package com.mycompany.swagger.codegen;
2
3
import io.swagger.codegen.languages.*;
4
5
public class MyObjcCodegen extends ObjcClientCodegen {
6
static {
7
PREFIX = "HELO";
8
}
9
}

並在執行產生器時指定 classname

終端機視窗
1
-l com.mycompany.swagger.codegen.MyObjcCodegen

您的子類別現在將會載入並覆寫父類別中的 PREFIX 值。

攜帶您自己的模型

有時候您不希望產生模型。在這種情況下,您可以簡單地指定匯入對應,告訴程式碼產生器什麼要建立。執行此操作時,每個參照特定模型的位置都會參照回您的類別。請注意,這可能不適用於所有語言…

若要指定匯入對應,請使用 --import-mappings 引數,並將模型對匯入邏輯指定為如下

終端機視窗
1
--import-mappings Pet=my.models.MyPet

或用於多個對應

終端機視窗
1
--import-mappings Pet=my.models.MyPet,Order=my.models.MyOrder

終端機視窗
1
--import-mappings Pet=my.models.MyPet --import-mappings Order=my.models.MyOrder