我已经按照this教程设置了Swashbuckle的自定义swagger请求示例,用于Swagger帮助页面。
当API将单个对象作为主参数时,它可以正常工作,但是当使用列表时,我得到一个"对象未设置为对象的实例"例外
这是一个代码示例
using Swashbuckle.Examples;
[HttpPost]
[SwaggerRequestExample(typeof(List<TestModel>), typeof(TestExample))]
public IHttpActionResult ListTest([FromBody] List<TestModel> tests)
{
return Ok(tests);
}
public class TestExample : IExamplesProvider
{
public object GetExamples()
{
return new List<TestModel>() {
new TestModel()
{
Id = 1,
Text = "First object"
},
new TestModel()
{
Id = 2,
Text = "Second object"
},
};
}
}
任何帮助将不胜感激
答案 0 :(得分:0)
使用@HelderSepu建议使用ApplySchemaVendorExtensions,这就是我做的工作:
在我的SwaggerConfig.cs
中c.SchemaFilter<ApplySchemaVendorExtensions>();
ApplySchemaVendorExtensions.cs
using Swashbuckle.Swagger;
public class ApplySchemaVendorExtensions : ISchemaFilter
{
public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type)
{
if (schema.properties != null)
{
if (type == typeof(TestModel))
{
schema.example = new TestModel()
{
Id = 1,
Text = "Custom text value"
};
}
}
}
}
如果有人有更好的解决方案,我不会将其标记为答案。