【发布时间】:2022-01-27 21:06:47
【问题描述】:
我有一个模型正在被其他模型之一使用,它被接受为我的一个控制器的参数。因此,该模型正在 Swagger UI 中显示。这个模型是一个可以为空的类型并且是可选的,我想在我的文档中隐藏它。
public class A
{
public string SomeProperty { get; set; }
public B? ClassB {get; set; }
}
public class B
{
public int SomeIntProperty { get; set; }
public bool SomeBooleanProperty { get; set; }
}
在控制器方法中:
public async Task<ActionResult<SomeType>> GetSomeType(A modelA, CancellationToken token)
按原样,此端点将接受如下 JSON 文档:
{
"SomeProperty": "SomeValue"
}
并且不需要 B 在场。因此,我想从我的 Swagger 模式中隐藏 B。我怎样才能做到这一点?我找到了一些相关的问题/答案,但都是关于隐藏属性的,https://stackoverflow.com/a/48454933/16749442
隐藏模型的所有属性会导致模型为空:
【问题讨论】:
-
使用视图模型
-
最好的答案是不要对两种不同的事物使用相同的模型。只需创建一个没有您要排除的属性的新模型。
标签: c# .net-core swagger swagger-ui swashbuckle