c# - ASP.NET 核心:NSwag 与 Swashbuckle
问题描述
我们目前正在将Swashbuckle.AspNetCore用于 API 文档目的,但是在生成客户端模型(Typescript)时,它似乎存在一个主要缺点。
作为示例,我使用基类增强了已知的 ASP.NET 默认项目 (WeatherForecast)
public class InfoEntryBase
{
public string Name { get; set; }
public string Description { get; set; }
}
public class WeatherForecast : InfoEntryBase
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string Summary { get; set; }
}
然后它将 WeatherForecast 公开为
WeatherForecast{
name string
nullable: true
description string
nullable: true
date string($date-time)
temperatureC integer($int32)
temperatureF integer($int32)
readOnly: true
summary string
nullable: true
}
并且遗产丢失了。这将使从服务器端代码自动生成客户端模型成为不可能,因为我们自然喜欢将继承移植到 Typescript 代码。
在调查NSwag.AspNetCore 时,我发现它负责继承。它暴露了:
WeatherForecast{
name string
description string
date* string($date-time)
temperatureC* integer($int32)
temperatureF* integer($int32)
summary string
}
InfoEntryBase{
name string
description string
}
我是否忽略了有关 Swashbuckle 的某些内容,或者是否没有其他选择可以从它切换到 NSwag?
您可以查看 https://github.com/ClemensOesterle/NSwagSpike/tree/swashbuckle上的代码, 而 NSwag 实现位于主分支中。
解决方案
这解决了它。
services.AddSwaggerGen(options =>
{
options.UseAllOfForInheritance();
推荐阅读
- javascript - 如何在使用 annyang 时通过下载获得麦克风访问权限
- c++ - 线程间消息传递调用c++程序主线程中的函数
- swift - rect和self的区别
- email - 我正在尝试使用 delphi 中的 indy 组件创建一个电子邮件应用程序,但我一直在弄清楚如何发送附件。
- html - 3 个链接在悬停时动画,但 1 没有
- python - 在 Python 中从数据框中提取文本
- mysql - 需要:用于重新分类输出的复杂 SQL 查询
- c# - 对服务的 PATCH 请求在我的 C# 应用程序中不起作用,但在 Fiddler 中起作用
- vhdl - INOUT 端口的多路复用器
- apache - 如何让 Apache 重写而不破坏图像?