Действия CRUD в ASP.NET Core

Завершено

Наша служба доставки пиццы поддерживает операции CRUD по списку пицц. Эти операции выполняются с помощью HTTP-команд, которые сопоставляются с помощью атрибутов ASP.NET Core. Как вы видели, HTTP-команда GET используется для получения одного или нескольких элементов из службы. Это действие помечается с помощью атрибута [HttpGet].

В следующей таблице показано сопоставление четырех операций, которые вы реализуете для нашей службы доставки пиццы.

HTTP-команда действия Операция CRUD Атрибут ASP.NET Core
GET Читать [HttpGet]
POST Создание [HttpPost]
PUT Обновить [HttpPut]
DELETE Удаление [HttpDelete]

Вы уже видели, как GET работают действия. Теперь давайте подробнее рассмотрим действия POST, PUT и DELETE.

POST

Чтобы разрешить пользователям добавлять новый элемент через конечную точку, необходимо реализовать действие POST с помощью атрибута [HttpPost]. При передаче элемента (в этом примере пицца) в метод в качестве параметра ASP.NET Core автоматически преобразует любое приложение/JSON, отправленный в конечную точку, в заполненный объект .NET Pizza .

Ниже приведена сигнатура метода Create, который вы реализуете в следующем разделе:

[HttpPost]
public IActionResult Create(Pizza pizza)
{            
    // This code will save the pizza and return a result
}

Атрибут [HttpPost] сопоставляет HTTP-запросыPOST, отправленные Create() http://localhost:5000/pizza с помощью метода. Он будет возвращать не список пицц, как в методе Get(), а ответ IActionResult.

IActionResult позволяет клиенту понять, был ли запрос выполнен успешно, и предоставляет идентификатор созданной пиццы. IActionResult использует стандартные коды состояния HTTP, поэтому он может легко интегрироваться с клиентами независимо от языка или платформы, на которых они работают.

ASP.NET Core
результат действия
Код состояния HTTP Description
CreatedAtAction 201 Пицца была добавлена в кэш в памяти.
Пицца включается в текст ответа с типом мультимедиа, который задается в заголовке accept HTTP-запроса (по умолчанию это JSON).
BadRequest подразумевается 400 Объект тела запроса pizza является недопустимым.

К счастью, есть служебные методы, ControllerBase которые создают соответствующие коды http-ответов и сообщения. Вы увидите, как эти методы работают в следующем упражнении.

PUT

Изменение или обновление пиццы в запасах аналогично методу POST, который вы реализовали, но он использует атрибут [HttpPut] и принимает параметр id в дополнение к объекту Pizza, который необходимо обновить:

[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
    // This code will update the pizza and return a result
}

Каждый экземпляр ActionResult в предыдущих действиях сопоставляется с кодом состояния HTTP в следующей таблице.

ASP.NET Core
результат действия
Код состояния HTTP Description
NoContent 204 Пицца обновлена в кэше в памяти.
BadRequest 400 Значение тела запроса Id не соответствует значению маршрута id.
BadRequest подразумевается 400 Объект тела запроса Pizza является недопустимым.

DELETE

Одним из самых простых в реализации действий является действие DELETE, которое принимает только параметр id с идентификатором пиццы, которую нужно удалить из кэша в памяти:

[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
    // This code will delete the pizza and return a result
}

Каждый экземпляр ActionResult в предыдущих действиях сопоставляется с кодом состояния HTTP в следующей таблице.

ASP.NET Core
результат действия
Код состояния HTTP Description
NoContent 204 Пицца удалена из кэша в памяти.
NotFound 404 Пицца, соответствующая предоставленному параметру id, не существует в кэше в памяти.

В упражнении в следующем уроке демонстрируются методы поддержки для каждого из этих четырех действий в веб-API.

Проверьте свои знания

1.

Предположим, вам необходимо обновить имя продукта. Какая HTTP-команда действия лучше всего подходит для этого запроса?

2.

В каком сценарии наиболее уместно возвращать код состояния HTTP 404 и как это делается в ASP.NET Core?