pykos Ответов: 1

Как настроить маршрут в web API 2 с помощью атрибутивной маршрутизации


Здравствуйте, у меня возникла проблема с настройкой маршрута в моем проекте web api 2. Кажется, я не могу создать такой маршрут с атрибутивной маршрутизацией

/api / {controller}/?object_id=5

Она всегда действовала как 404...

Если я наберу /api / {controller}/object?object_id=5, то получу желаемые результаты...

Есть ли способ сделать так, чтобы это произошло?

Спасибо, Б

Что я уже пробовал:

Мой маршрут выглядит так
[Route("{object_id}"];

1 Ответов

Рейтинг:
2

David_Wimbley

Способ работы маршрутов web API заключается в том, что вам нужно добавить

config.MapHttpAttributeRoutes();


В ваш файл WebApiConfig. cs, если его там нет.

Тогда что касается маршрута, то у вас есть два атрибута, которые нужно иметь в виду: RoutePrefix и Route.

Таким образом, примером этого может быть

[RoutePrefix("api/people")]
public class PeopleController : Controller
{
   [Route("names")]
   public IHttpActionResult GetNames()
   { 
      var names = //do a DB select operation or something
      return Ok(names);
   }
}


Этот пример позволяет использовать url-адрес http://localhost/api/people/names вместо более уродливой версии http://localhost/people/getnames.

Теперь для действий с параметрами в маршрутах web api вы должны сделать что-то вроде

[RoutePrefix("api/people")]
public class PeopleController : Controller
{
   [Route("names/{personId}")]
   public IHttpActionResult GetNameForPersion(int personId)
   { 
      var names = //do a DB select operation or something
      return Ok(names);
   }
}


Это позволит вам добавить идентификатор, представляющий человека, в URL-адрес. Имейте в виду, что имя параметра в вашем действии должно совпадать с именем, используемым в маршруте. В противном случае, я думаю, вы получите ошибку 404.

Таким образом, этот url-адрес будет выглядеть примерно так http://localhost/api/people/names/1

Если у вас есть еще какие-то вопросы, вот хорошая ссылка:

Маршрутизация атрибутов в ASP.NET Web API 2 / The ASP.NET сайт[^]