尽管.NET Core新版本的WebAPI中可以直接从XML中读取出要输出的Swagger相应示例,但我还在使用老的.net framework,那么怎么增加Inline Model的示例输出呢?
首先说明,我现在的API都是统一输出成HttpResponseMessage,截图如下:
如果您也是使用这种方式,或者使用async Task<HttpResponseMessage>的返回方式,都可以参考本文的方法,增加输出的响应值类型和示例。
先引用:using Swashbuckle.Swagger.Annotations;,然后在Controller的方法上增加如下注解。
[SwaggerResponse(HttpStatusCode.OK, Type=typeof(IEnumerable<Country>))]
[SwaggerResponseExample(HttpStatusCode.OK, typeof(MyExamples))]
[SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(IEnumerable<ErrorResource>))]
然后这里的写我们的示例代码:
public class MyExamples : IExamplesProvider
{
public object GetExamples()
{
return new List<Country>
{
new Country { Code = "CN", Name = "China" },
new Country { Code = "US", Name = "American" }
};
}
}
最后别忘了SwaggerConfig中开启ExamplesOperationFilter
c.OperationFilter<ExamplesOperationFilter>();
好了,最后看下真实输出效果。因为我偷懒,没用写Example Value,只放了数据类型Inline Model。