c# - 如何在 Swagger UI 中隐藏特定架构?
问题描述
我已经在使用 C# (.NET Core 5) 制作的 Web API 中实现了 Swagger 文档。
我有 3 个课程DefaultCommandResult
:SuccessCommandResult
和ErrorCommandResult
。
DefaultCommandResult
是其他两个继承自的基类。端点中返回的对象是 aSuccessCommandResult
或ErrorCommandResult
,并且DefaultCommandResult
永远不会返回。我需要做的是隐藏在与基类相关的端点响应中生成的模式DefaultCommandResult
:
控制器中的请求:
public ActionResult<DefaultCommandResult<ServerIdCommand>> Get([FromQuery] RecoverServerIdCommand command)
{
try
{
var id = handler.RecoverServerId(command);
if (id is null)
return NotFound();
var output = new ServerIdCommand { Id = id };
var result = new SuccessCommandResult<ServerIdCommand>(output);
return Ok(result);
}
catch (ObjectNotFoundException ex)
{
var result = new ErrorCommandResult<string>(ex.Message);
return NotFound(result);
}
catch (Exception ex)
{
var result = new ErrorCommandResult<string>(ex.Message);
return BadRequest(result);
}
}
DefaultCommandResult
班级:
[SwaggerSubType(typeof(SuccessCommandResult<object>))]
[SwaggerSubType(typeof(ErrorCommandResult<object>))]
public class DefaultCommandResult<T> where T : class
{
public bool Success { get; set; }
protected DefaultCommandResult(bool success)
{
Success = success;
}
}
该类SuccessCommandResult
(ErrorCommandResult
遵循相同的结构,但有错误):
[SwaggerDiscriminator("successCommandResult")]
public class SuccessCommandResult<T> : DefaultCommandResult<T> where T : class
{
public List<T> Data { get; private set; }
public SuccessCommandResult() : base(true) { }
public SuccessCommandResult(List<T> data) : base(true)
{
Data = data;
}
public SuccessCommandResult(T @object) : base(true)
{
if (Data is null)
Data = new List<T> { @object };
else
Data.Add(@object);
}
}
如何使用Swashbuckle
C# 框架实现这一点?提前致谢。
解决方案
推荐阅读
- apache-flink - 尽管重试,flink如何保证kafka记录只发生一次
- javascript - 无法正确执行 else if 语句
- django - Django 管理员。如何更改字段标签的位置
- javascript - 为什么,当滚动页面时,当滚动到带有水平块的块时,它并不总是滚动?
- json - 如何将输出转换为 JSON 格式?
- css -
Ionic + Angular 中的二维码大小 - python - Tensorflow2.1:训练时不更新 tf.Variable 值
- docker - 如何将 docker 连接到 WSL2 发行版
- wordpress - Fusion Builder 中继器
- reactjs - 如何在 Fluent UI React 中使用网格布局