Добавьте параметры в строку запроса в путях Swashbuckle - PullRequest
0 голосов
/ 16 марта 2020

У меня есть этот контроллер с 2 действиями, оба GET, с тем же именем.

[ApiVersion("2")]
[Route("v{version:apiVersion}/[controller]")]
public class FooController : BaseController

И эти два действия похожи на:

public IActionResult Get([FromServices]IBarService barService)  
public IActionResult Get([FromServices]IBarService barService, string someParameter)

Но мне нужно , чтобы различать guish эти два действия как разные операции с входы и даже выходы . Также я не могу изменить поведение текущего API , это означает, что конечный пользователь должен иметь доступ к следующим перечисленным путям:

GET v2/Foo
GET v2/Foo?someParameter={someParameter}

Во-первых, я должен был добавить это строка, чтобы заставить это работать:

o.ResolveConflictingActions((apiDescriptions) => apiDescriptions.First());

Это работает, но когда OpenApiOperation перечислен, у него был только первый (по очевидным причинам)

Как я могу добавить параметры строки запроса к заставить их работать как 2 разных пути?

1 Ответ

0 голосов
/ 16 марта 2020

Вот альтернатива:

[RoutePrefix("foo/widgets")]
public class RoutePrefixController : ApiController
{
    [Route("")]
    public string Get()
    {
        return "value";
    }

    [Route("{id}")]
    public string GetById(string id)
    {
        return "value " + id;
    }

    [Route("{id}/{name}")]
    public string GetByIdByName(string id, string name)
    {
        return "value " + id + " " + name;
    }

Использует RoutePrefix и Route. Ваши конечные значения:

  • GET ​/foo​/widgets
  • GET ​/foo​/widgets​/{id}
  • GET ​/foo​/widgets​/{id}​/{name}

Вот как это выглядит на чванстве:
http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=RoutePrefix

...