c# - Swagger-Codegen 自定义设置

标签 c# asp.net-web-api swagger-codegen

我正在使用 swagger-codegen 生成我的客户端 C# 类。它完成了这项工作,但有一些我想自定义的东西:

1) 最重要的是,我如何告诉它使用哪个命名空间,或者可能是基本命名空间?现在所有生成的类都有 IO.Swagger.Model 命名空间,我该如何更改它?

2) 我生成的所有模型都以 I... 开头,就像在 ICustomer 中一样... 如果类名以 2 个大写字母开头,并且第一个字母是 I,是否有任何方法可以自动删除第一个 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 个文件夹:ApiClientModelProperties。有没有办法只生成 ClientModel 文件夹?

最佳答案

基于从 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 更有意义,而不是使用名为 ICustomer 的类...所以在上面的命令中,我添加了

--model-name-prefix Api

3) 仍然不确定这是否/如何可能。

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

关于c# - Swagger-Codegen 自定义设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37175112/

相关文章:

asp.net-mvc - WebApi 操作路线

c# - WebApi BaseController - 检查用户

c# - ApiController 的自动测试

c# - 在 C# 代码中获取 UWP 主题颜色

c# - 将控件对象添加到 DataGridViewTextBoxCell

c# - 具有相同名称的路由参数和 View 模型属性 - 意外行为

c# - 从列表框中快速选择一个对象

android-studio - 将 swagger-codegen 项目导入现有的 Android 项目

java - 将swagger-codgen-maven-plugin用于REST客户端时跳过gradle文件生成

rest - 如何将数组或枚举中的枚举值定义为映射属性中的键?