如何在生成 OpenAPI 客户端时重用 类?

How to reuse classes when generating an OpenAPI client?

假设我定义了这个 class:

public class Animal
{
   public int RegId {get;set;}
   public string Name {get;set;}
}

而且我需要将它公开到我系统的远程部分(例如,另一个位置的客户端应用程序),我决定使用 OpenAPI 进行通信。

控制器代码类似于:

[HttpGet("GetLivingCargo")]
public async Task<IEnumerable<Animal>> GetLivingCargo()
{
    return await pFacade.GetLivingCargo();
}

Swagger 可以很好地生成文档。 当我生成要在远程应用程序中使用的 API 客户端时,我总是复制 class(所以我的原始 class 和生成的客户端完全相等 class) .

我怎样才能避免它,而不必自己手动编写 API 客户端来使用我原来的 class?

最后我找到了一种方法让 NSwagStudio 重用我的模型 类。

Step-by-Step:

  1. 获取 OpenAPI 规范 URL
  2. 让它创建一个本地副本以仔细检查规范是否正确
  3. 在屏幕的输出部分标记“C# 客户端”(现在无法放置图像,因为防火墙阻止 ImgUr.com)
  4. 在“设置”选项卡上,需要更改两个配置:
    • 其他命名空间用法:放入要重复使用的 类 的命名空间列表 (comma-separated)
    • 生成 DTO 类型:UNCHECK
  5. 生成。

对于那些不想使用 all-or-nothing 方法的人,选中 Generate DTO Types 后,您可以通过填写 (comma-separated) 排除某些类型排除类型名称 配置设置中要排除的类型列表。