Атрибут SwaggerRequestExample не работает в ASP.NET MVC 5 (.NET Framework 4.5.2)
Я играю с пакетом Swashbuckle.Examples (3.10.0) в проекте ASP.NET MVC. Однако я не могу сделать так, чтобы примеры запросов появлялись в пользовательском интерфейсе.
Конфигурация (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 используется для авторизации.
2 ответа
Я знаю чувство, много накладных просто для примера, я борюсь с этим некоторое время, поэтому я создал свой собственный форк 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
Я получил ответ от владельца библиотеки здесь:
Примеры запросов Swagger могут быть установлены только для действий [HttpPost]
Не ясно, является ли это выбором дизайна или просто ограничением, поскольку я считаю, что примеры [HttpGet] также актуальны.