如何在生成 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:
- 获取 OpenAPI 规范 URL
- 让它创建一个本地副本以仔细检查规范是否正确
- 在屏幕的输出部分标记“C# 客户端”(现在无法放置图像,因为防火墙阻止 ImgUr.com)
- 在“设置”选项卡上,需要更改两个配置:
- 其他命名空间用法:放入要重复使用的 类 的命名空间列表 (comma-separated)
- 生成 DTO 类型:UNCHECK
- 生成。
对于那些不想使用 all-or-nothing 方法的人,选中 Generate DTO Types 后,您可以通过填写 (comma-separated) 排除某些类型排除类型名称 配置设置中要排除的类型列表。
假设我定义了这个 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:
- 获取 OpenAPI 规范 URL
- 让它创建一个本地副本以仔细检查规范是否正确
- 在屏幕的输出部分标记“C# 客户端”(现在无法放置图像,因为防火墙阻止 ImgUr.com)
- 在“设置”选项卡上,需要更改两个配置:
- 其他命名空间用法:放入要重复使用的 类 的命名空间列表 (comma-separated)
- 生成 DTO 类型:UNCHECK
- 生成。
对于那些不想使用 all-or-nothing 方法的人,选中 Generate DTO Types 后,您可以通过填写 (comma-separated) 排除某些类型排除类型名称 配置设置中要排除的类型列表。