Обработка HTTP-методов с помощью маршрутизации на основе атрибутов¶
В Razor Pages HTTP-методы, такие как POST и GET, не участвуют в процессе маршрутизации; они используются только, чтобы решить, какой обработчик страницы выполнить: OnGet для GET и OnPost для POST.
Для контроллеров API же HTTP-метод принимает участие в самом процессе маршрутизации, для того, чтобы иметь возможность направить GET-запрос к одному методу действия, а POST-запрос — к другому, даже запросы использовали один URL-адрес. Этого требует логика построения RESTful API.
ASP.NET Core предоставляет набор атрибутов, которые можно использовать для этих целей, например:
[HttpPost]обрабатывает только POST-запросы[HttpGet]обрабатывает только GET-запросы[HttpPut]обрабатывает только PUT-запросы
Такие атрибуты существуют для всех стандартных HTTP-методов. Эти атрибуты можно использовать вместо атрибута [Route], чтобы указать, что метод действия должен соответствовать одному HTTP-методу:
public class AppointmentController
{
[HttpGet("/appointments")]
public IActionResult ListAppointments()
{
/*реализация*/
}
[HttpPost("/appointments")]
public IActionResult CreateAppointment()
{
/*реализация*/
}
}
Если приложение получит запрос, совпадающий с шаблоном маршрута, но не совпадающий с нужным HTTP-методом, вернется ошибка
405 Method not allowed.
Дата создания : 28 сентября 2022 г.