SwaggerRequestExample 属性在 ASP.NET MVC 5 (.NET Framework 4.5.2) 中不起作用
SwaggerRequestExample attribute does not work in ASP.NET MVC 5 (.NET Framework 4.5.2)
我正在 ASP.NET MVC 项目中使用 Swashbuckle.Examples package (3.10.0)。但是,我无法让请求示例出现在 UI 中。
配置 (SwaggerConfig.cs)
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c => {
c.SingleApiVersion("v1", "TestApp.Web");
c.IncludeXmlComments(string.Format(@"{0}\bin\TestApp.Web.xml", System.AppDomain.CurrentDomain.BaseDirectory));
c.OperationFilter<ExamplesOperationFilter>();
c.OperationFilter<DescriptionOperationFilter>();
c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
})
.EnableSwaggerUi(c => { });
}
请求示例类
public class EchoRequestExample : IExamplesProvider
{
public object GetExamples()
{
return new EchoInput { Value = 7 } ;
}
}
public class EchoInput
{
public int Value { get; set; }
}
动作
[HttpGet]
[Route("Echo")]
[CustomApiAuthorize]
[SwaggerRequestExample(typeof(EchoInput), typeof(EchoRequestExample))]
[ResponseType(typeof(EchoServiceModel))]
public HttpResponseMessage Echo([FromUri] EchoInput model)
{
var ret = new EchoServiceModel
{
Username = RequestContext.Principal.Identity.Name,
Value = value
};
return Request.CreateResponse(HttpStatusCode.OK, ret);
}
Swagger UI 显示 xml 注释和输出元数据(模型和包含默认值的示例),但没有显示请求示例。我附加到进程并且 EchoRequestExample.GetExamples
没有被击中。
问题:如何使 SwaggerRequestExample 属性在 ASP.NET MVC 5 中工作?
注:Windows身份用于授权
我知道这种感觉,很多开销只是举个例子,我为此苦苦挣扎了一段时间,所以我创建了自己的 swashbuckle 分支,在尝试合并我的想法失败后,我最终分离并重命名了我的想法项目并推送到 nuget,这里是:Swagger-Net
这样的例子是:
[SwaggerExample("id", "123456")]
public IHttpActionResult GetById(int id)
{
这里是完整的代码:Swagger_Test/Controllers/IHttpActionResultController.cs#L26
想知道它在 Swagger 上的样子-UI,这里是:
http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=IHttpActionResult#/IHttpActionResult/IHttpActionResult_GetById
我收到了图书馆所有者的答复here:
Swagger request examples can only set on [HttpPost] actions
不清楚这是设计选择还是限制,因为我发现 [HttpGet] 示例也很相关。
我正在 ASP.NET MVC 项目中使用 Swashbuckle.Examples package (3.10.0)。但是,我无法让请求示例出现在 UI 中。
配置 (SwaggerConfig.cs)
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c => {
c.SingleApiVersion("v1", "TestApp.Web");
c.IncludeXmlComments(string.Format(@"{0}\bin\TestApp.Web.xml", System.AppDomain.CurrentDomain.BaseDirectory));
c.OperationFilter<ExamplesOperationFilter>();
c.OperationFilter<DescriptionOperationFilter>();
c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
})
.EnableSwaggerUi(c => { });
}
请求示例类
public class EchoRequestExample : IExamplesProvider
{
public object GetExamples()
{
return new EchoInput { Value = 7 } ;
}
}
public class EchoInput
{
public int Value { get; set; }
}
动作
[HttpGet]
[Route("Echo")]
[CustomApiAuthorize]
[SwaggerRequestExample(typeof(EchoInput), typeof(EchoRequestExample))]
[ResponseType(typeof(EchoServiceModel))]
public HttpResponseMessage Echo([FromUri] EchoInput model)
{
var ret = new EchoServiceModel
{
Username = RequestContext.Principal.Identity.Name,
Value = value
};
return Request.CreateResponse(HttpStatusCode.OK, ret);
}
Swagger UI 显示 xml 注释和输出元数据(模型和包含默认值的示例),但没有显示请求示例。我附加到进程并且 EchoRequestExample.GetExamples
没有被击中。
问题:如何使 SwaggerRequestExample 属性在 ASP.NET MVC 5 中工作?
注:Windows身份用于授权
我知道这种感觉,很多开销只是举个例子,我为此苦苦挣扎了一段时间,所以我创建了自己的 swashbuckle 分支,在尝试合并我的想法失败后,我最终分离并重命名了我的想法项目并推送到 nuget,这里是:Swagger-Net
这样的例子是:
[SwaggerExample("id", "123456")]
public IHttpActionResult GetById(int id)
{
这里是完整的代码:Swagger_Test/Controllers/IHttpActionResultController.cs#L26
想知道它在 Swagger 上的样子-UI,这里是:
http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=IHttpActionResult#/IHttpActionResult/IHttpActionResult_GetById
我收到了图书馆所有者的答复here:
Swagger request examples can only set on [HttpPost] actions
不清楚这是设计选择还是限制,因为我发现 [HttpGet] 示例也很相关。