Обрабатывать основные методы WebApi с Id как string и int - PullRequest
1 голос
/ 26 мая 2019

У меня есть два метода:

    [HttpGet("{id}")]
    public IActionResult GetTask([FromRoute] int id)
    {
    }

    [HttpGet("{userId}")]
    public IActionResult GetUserTask([FromRoute] string userId)
    {
    }

Как видите, я хочу перейти к моим маршрутам API, таким как:

https://localhost:44365/Task/1

и

https://localhost:44365/Task/string

Но мой WebApi проект не может справиться с этим.Когда я прохожу маршрут следующим образом:

https://localhost:44365/Task/7dd2514618c4-4575b3b6f2e9731edd61

я получаю 400 http и этот ответ:

{
"id": [
    "The value '7dd2514618c4-4575b3b6f2e9731edd61' is not valid."
]
}

Во время отладки я не использую никаких методов (когда я передаю строку вместоint)

Мой вопрос: как загрузить методы с одним параметром с string или int?Эти методы делают разные вещи

РЕДАКТИРОВАТЬ

Когда я передаю что-то вроде:

https://localhost:44365/Task/dddd

Я все еще получаю ответ с недействительным id

Ответы [ 2 ]

2 голосов
/ 26 мая 2019

Вы можете определить тип параметра как [HttpGet("{id:int}")].Для получения дополнительной информации см. Ссылку ниже.

https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-constraints

Ваши действия должны быть такими, как показано ниже.

    [HttpGet("{id:int}")]
    public IActionResult GetTask([FromRoute] int id)
    {
    }

    [HttpGet("{userId}")]
    public IActionResult GetUserTask([FromRoute] string userId)
    {
    }
1 голос
/ 26 мая 2019

Используйте вот так

[HttpGet("{id}")]
    public IActionResult GetTask([FromRoute] int id)
    {
    }

    [HttpGet("User/{userId}")]
    public IActionResult GetUserTask([FromRoute] string userId)
    {
    }

и при вызове API с использованием guid / string

https://localhost:44365/Task/User/7dd2514618c4-4575b3b6f2e9731edd61
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...