roc*_*m4l 5 c# swagger swashbuckle
对于通过[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
},
}
}
Run Code Online (Sandbox Code Playgroud)
所以我找到了一个解决方案。我创建了一个 ISchemaFilter 实现,它只是将每个属性的 readonly 设置为 false。我需要更多地考虑这对下游意味着什么,所以我不确定我是否喜欢这个解决方案。
public class IgnoreReadOnlySchemaFilter : ISchemaFilter
{
public void Apply(Schema schema, SchemaFilterContext context)
{
schema.ReadOnly = false;
if (schema.Properties != null)
{
foreach (var keyValuePair in schema.Properties)
{
keyValuePair.Value.ReadOnly = false;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2022 次 |
| 最近记录: |