WebApi 2 с маршрутизацией?или же / - PullRequest
0 голосов
/ 26 ноября 2018

Я только что добавил swagger в свой API для генерации некоторой документации ...

обычно, мой код переднего плана делал бы "get by id" следующим образом:

https://whatever.com/api/GetDisplayContainer/A90555CD-931E-4D9D-D51D-08D63E83FCC6

однако, swaggers "попробуй" хочет отправить:

https://whatever.com/api/GetDisplayContainer?id=A90555CD-931E-4D9D-D51D-08D63E83FCC6

Я хочу иметь возможность поддерживать оба способа.Как мне это сделать?

Вот пример метода контроллера:

[HttpGet]
[Route("GetDisplayContainer")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainer(Guid id)
{
    return ApiResponse.Convert(ResourceService, _containerService.GetDisplayContainerById(id));
}

Я действительно не хочу менять свой существующий код, чтобы сделать это "строка запроса"" путь.потому что это абсолютно верный способ сделать это.Но было бы неплохо иметь возможность поддерживать оба ...

Это C # с использованием .net core 2.1.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Если вы измените свой маршрут с GetDisplayContainer на GetDisplayContainer/{id}, то Swagger будет знать, что параметр не находится в строке запроса, и должен сгенерировать желаемый результат.

Полный код:

[HttpGet]
[Route("GetDisplayContainer/{id}")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainer(Guid id)
{
    return ApiResponse.Convert(ResourceService, _containerService.GetDisplayContainerById(id));
}
0 голосов
/ 26 ноября 2018

Вы можете сделать два маршрута:

[HttpGet]
[Route("GetDisplayContainer")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainer([FromQuery] Guid id)
{
}

и

[HttpGet]
[Route("GetDisplayContainer/{id}")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainerRoute([FromRoute] Guid id)
{
}
...