从Swagger生成.NET客户端

Ant*_*ard 5 asp.net-core

我可以使用什么工具来生成要从Swagger定义中使用的.NET Client?

例如,我开始尝试使用NSwag Studio,并且希望能够生成类似于我以前创建的Repository类的代码。

Wil*_*eng 11

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

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

  • 夏普
  • csharp-netcore
  • csharp-dotnet2

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

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

披露:我是 OpenAPI Generator 和 Swagger Codegen 的最大贡献者。


str*_*y05 6

您可以使用swagger-codegenswagger项目中的工具。它产生使用

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

您可以下载cli应用程序,也可以使用 在线编辑器。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 ....
}
Run Code Online (Sandbox Code Playgroud)