Перейти к содержанию

Обработка 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.


Последнее обновление : 21 апреля 2023 г.
Дата создания : 28 сентября 2022 г.

Комментарии

Комментарии