Swagger-Codegen 自定义设置
Swagger-Codegen custom settings
我正在使用 swagger-codegen
生成我的客户端 C# classes。它完成了工作,但有一些我想自定义的东西:
1) 最重要的是,我如何告诉它使用哪个命名空间,或者可能是基本命名空间?现在所有生成的 classes 都有 IO.Swagger.Model
命名空间,我该如何更改它?
2) 我生成的所有模型都以 I... 开头,就像在 ICustomer 中一样... 如果 class 名称以 2 个大写字母和第一个字母开头,是否有任何方法可以自动去除第一个 I是一个我?
3) 如果2可以完成,有没有办法让它附加一个:IWhatever
?因此,如果它试图生成 ICustomer
,我希望看到:
public class Customer : ICustomer
这可以做到吗?
4) 对于我的最后一个问题,我使用的是这个命令行:
java -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
问题是它将此添加到路径中:
src\main\csharp\IO\Swagger
有什么办法可以不把这个添加到路径中吗?
5) 最后,也是最不重要的,它生成了 4 个文件夹:Api
、Client
、Model
和 Properties
。有没有办法只生成 Client
和 Model
文件夹?
基于 swagger-codegen
团队的回复和我自己的尝试:
1) 要修复命名空间,我必须创建一个 config.json
文件,基本上是这样的:
{
"packageName": "My.Namespace.Whatever"
}
现在我的 运行 命令是
java -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
-c config.json
2) 无法替换,但我可以在前面添加...所以我决定 ApiICustomer
更有意义,而不是将 class 命名为 ICustomer
...所以在上面的命令中,我添加了
--model-name-prefix Api
3) 仍然不确定if/how 这是否可能。
4) 看起来一个新的变化即将到来,这将改变它的工作方式。 https://github.com/swagger-api/swagger-codegen/issues/2837
5) 根据此处的信息:https://github.com/swagger-api/swagger-codegen#selective-generation 您可以通过添加 java
系统属性来实现,例如 java -Dwhateverproperty
。所以最终结果(不包括对 #3 的任何修复)是:
java -Dmodels -DsupportingFiles -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
-c C:/Code/SwaggerCodeGen/config.json
--model-name-prefix Api
对于第 1 点,除了使用配置文件 (-c config.json
),
您也可以直接使用该选项:-DpackageName=My.Namespace.Whatever
我正在使用 swagger-codegen
生成我的客户端 C# classes。它完成了工作,但有一些我想自定义的东西:
1) 最重要的是,我如何告诉它使用哪个命名空间,或者可能是基本命名空间?现在所有生成的 classes 都有 IO.Swagger.Model
命名空间,我该如何更改它?
2) 我生成的所有模型都以 I... 开头,就像在 ICustomer 中一样... 如果 class 名称以 2 个大写字母和第一个字母开头,是否有任何方法可以自动去除第一个 I是一个我?
3) 如果2可以完成,有没有办法让它附加一个:IWhatever
?因此,如果它试图生成 ICustomer
,我希望看到:
public class Customer : ICustomer
这可以做到吗?
4) 对于我的最后一个问题,我使用的是这个命令行:
java -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
问题是它将此添加到路径中: src\main\csharp\IO\Swagger
有什么办法可以不把这个添加到路径中吗?
5) 最后,也是最不重要的,它生成了 4 个文件夹:Api
、Client
、Model
和 Properties
。有没有办法只生成 Client
和 Model
文件夹?
基于 swagger-codegen
团队的回复和我自己的尝试:
1) 要修复命名空间,我必须创建一个 config.json
文件,基本上是这样的:
{
"packageName": "My.Namespace.Whatever"
}
现在我的 运行 命令是
java -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
-c config.json
2) 无法替换,但我可以在前面添加...所以我决定 ApiICustomer
更有意义,而不是将 class 命名为 ICustomer
...所以在上面的命令中,我添加了
--model-name-prefix Api
3) 仍然不确定if/how 这是否可能。
4) 看起来一个新的变化即将到来,这将改变它的工作方式。 https://github.com/swagger-api/swagger-codegen/issues/2837
5) 根据此处的信息:https://github.com/swagger-api/swagger-codegen#selective-generation 您可以通过添加 java
系统属性来实现,例如 java -Dwhateverproperty
。所以最终结果(不包括对 #3 的任何修复)是:
java -Dmodels -DsupportingFiles -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
-c C:/Code/SwaggerCodeGen/config.json
--model-name-prefix Api
对于第 1 点,除了使用配置文件 (-c config.json
),
您也可以直接使用该选项:-DpackageName=My.Namespace.Whatever