Атрибут 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] также актуальны.

Другие вопросы по тегам