【发布时间】:2019-09-28 23:08:21
【问题描述】:
对于通过[FromBody] 传递给动作的模型,我喜欢使它们的属性不可变public int SomeProperty { get; private set; }。这样我就知道我的处理程序的输入没有被修改。
我遇到的问题是 Swagger 和 Swashbuckle 完全忽略了这些字段以呈现参数有效负载的示例。我查看了从我们的 API 生成的 swagger 架构,发现所有提到的字段都有 readOnly: true。
我想知道是否有某种方法可以配置 Swashbuckler 或 Swagger 以不忽略这些属性。或者也许有一些方法可以使用 SwashBuckle 的扩展框架的某些部分将每个定义的 readonly 设置为 false?
编辑:从 swagger.json 添加示例
在本例中,someProperty 被标记为只读。我认为这就是为什么该属性没有出现在生成的 POST 参数示例中的原因。如果有办法让 swagger gen 不添加任何只读属性,我会很好。
{
"type": "object",
"properties": {
"someProperty": {
"format": "int32",
"type": "integer",
"readOnly": true
},
}
}
【问题讨论】:
-
也许这会有所帮助codemag.com/article/1905041
-
你能分享你的 swagger.json,或者至少是你现在拥有的和你想得到的相关部分吗?
-
@HelderSepulveda 我添加了一个示例。我想我想要的是相同的结构,但没有只读。
-
您使用的是哪个版本的 swashbuckle?我看到最新的 Swashbuckle.AspNetCore 他们有涵盖这些情况的单元测试:github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/…
-
那些测试用例正在测试 swashbuckle 是否与我想要的相反。如果无法关闭该功能,我可能需要以不同的方式处理不变性。
标签: c# swagger swashbuckle