Действия 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.