【问题标题】:Generate .NET Client from Swagger [closed]从 Swagger 生成 .NET 客户端 [关闭]
【发布时间】:2019-01-08 15:12:18
【问题描述】:

我可以使用什么工具来生成 .NET 客户端以从 Swagger 定义中使用?

例如,我开始尝试 NSwag Studio,我希望能够生成看起来像我习惯创建的 Repository 类的代码。

希望删除问题的选民注意:问题的答案和 cmets 对读者有用,因此删除不是一个好主意。 由于 SO 不允许针对书籍、工具、软件库寻求建议的问题,因此该问题应保持关闭状态或(甚至更好)考虑迁移到 http://softwarerecs.stackexchange.com

【问题讨论】:

  • Visual Studio (2017) 内置了此功能:右键单击项目 => 添加 => REST Api 客户端...
  • 它使用 AutoRest,对吧?
  • 不知道,很遗憾。
  • 几个月前我试过了,但我并没有真正相信。

标签: asp.net-core swagger-codegen


【解决方案1】:

您可以使用 swagger 项目中的 swagger-codegen 工具。它生成的 C# 文件使用

  • RestClient 用于 HTTP 调用
  • Newtonsoft.Json 用于 json 编组
  • .NET DataContract 用于模型。

您可以下载cli app 或使用online editor。 petstore 示例模型如下所示:

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Newtonsoft.Json;

namespace IO.Swagger.Model {

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class Order {
      /// <summary>
      /// Gets or Sets Id
      /// </summary>
      [DataMember(Name="id", EmitDefaultValue=false)]
      [JsonProperty(PropertyName = "id")]
      public long? Id { get; set; }

      /// <summary>
      /// Gets or Sets PetId
      /// </summary>
      [DataMember(Name="petId", EmitDefaultValue=false)]
      [JsonProperty(PropertyName = "petId")]
      public long? PetId { get; set; }
 .... snip ....
}

【讨论】:

    【解决方案2】:

    您可能想试试 OpenAPI Generator (https://github.com/OpenAPITools/openapi-generator),它同时支持 OpenAPI 规范 v2 和 v3。 (OpenAPI 规范 v2 以前称为 Swagger 规范 v2)

    有 3 种不同的 C# 客户端生成器:

    • csharp
    • csharp-netcore
    • csharp-dotnet2

    该项目还包括 2 个 C# 服务器生成器:csharp-nancyfx、aspnetcore

    如果您需要帮助,请在 Github 存储库中打开一个问题。

    披露:我是 OpenAPI Generator 和 Swagger Codegen 的主要贡献者。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 2016-06-29
    • 1970-01-01
    • 2012-08-19
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多