【问题标题】:How to generate C# client from Swagger 1.2 spec?如何从 Swagger 1.2 规范生成 C# 客户端?
【发布时间】:2016-06-29 10:04:46
【问题描述】:

似乎每个平台都有数百万种选择,但我正在努力为 C# 找到一个简单的解决方案。我发现的所有这些似乎都给我带来了麻烦:要么它们根本不起作用(例如http://swaggercodegen.azurewebsites.net/),要么只支持2.0(例如AutoRestNSwag)。有一半的工具甚至不清楚它们支持哪些版本:-(

我知道 official tool,但这需要 JDK 7,这对我来说目前不是一个选项。

在绝望中,我什至尝试将 swagger 规范转换为 2.0,但我尝试过的转换工具有一半不起作用,给出了相互矛盾的建议,或者我不知道如何使用(我发现自己深深地陷入了 nodejs很快...这真的是勇敢的新世界吗?!带回 WSDL ;-))。

【问题讨论】:

  • 请将您的问题移至softwarerecs.stackexchange.com
  • 您的 1.2 规范有多长?也许发布你的第一个 API?转换到 2.0 应该不难 - 我认为这是您最好的选择。

标签: c# .net code-generation swagger


【解决方案1】:

你可以使用在线swagger codegen创建客户端,无需安装任何东西:

https://generator.swagger.io/

您可以选择 POST /gen/clients/{language} 并输入如下正文:

{
  "options": {},
  "swaggerUrl": "http://petstore.swagger.io/v2/swagger.json"
}

输入您自己的 URL 以访问规范。如果您需要传递任何选项,可以将它们放在options 哈希中。 C# 的可用选项列表也可以从生成器中获得:

https://generator.swagger.io/api/gen/clients/csharp-dotnet2

{
  "packageName": {
    "opt": "packageName",
    "description": "C# package name (convention: Camel.Case).",
    "type": "string",
    "default": "IO.Swagger"
  },
  "packageVersion": {
    "opt": "packageVersion",
    "description": "C# package version.",
    "type": "string",
    "default": "1.0.0"
  },
  "clientPackage": {
    "opt": "clientPackage",
    "description": "C# client package name (convention: Camel.Case).",
    "type": "string",
    "default": "IO.Swagger.Client"
  }
}

【讨论】:

  • 不幸的是,我找不到任何文档可以确认使用在线生成器将允许您使用 Swagger 1.2 规范。我并不是说它不受支持,但我找不到证据表明不支持。
  • 代码生成器支持1.0、1.1、1.2、2.0规范。如果 1.2 规范格式错误,它可能不起作用(1.2 最初没有验证模式)。它基于swagger-parser自动将规范转换为2.0格式,然后生成代码。
  • 不确定它的作用(我尝试了他们的示例,甚至没有我的 json),在生成代码后,它具有下载代码的链接,但链接导致 HTTP ERROR 500 并显示消息访问问题/ api/gen/download/d40029be-eda6-4d62-b1ef-d05e2e91a72a。原因:请求失败。
  • @fehguy 你确定它支持 1.2 吗?我找不到让它工作的方法:{ "spec": {'1.2'}, "swaggerUrl": "public.je-apis.com", }
  • 我无法呈现此定义 提供的定义未指定有效的版本字段。请指明有效的 Swagger 或 OpenAPI 版本字段。支持的版本字段是 swagger: "2.0" 和那些匹配 openapi: 3.0.n 的(例如,openapi: 3.0.0)。
【解决方案2】:

NSwag 为客户端生成提供了多种选项,包括 CLI、代码或 Windows 应用程序。

你可以check完整文章在 NSwag

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2022-10-05
    相关资源
    最近更新 更多