Ações CRUD no ASP.NET Core

Concluído

Nosso serviço de pizza suporta operações CRUD para uma lista de pizzas. Essas operações são realizadas por meio de verbos HTTP, que são mapeados por meio de atributos ASP.NET Core. Como você viu, o verbo HTTP GET é usado para recuperar um ou mais itens de um serviço. Uma ação desse género é anotada com o atributo [HttpGet].

A tabela a seguir mostra o mapeamento das quatro operações que você está implementando para o serviço de pizza:

Verbo de ação HTTP Operação CRUD Atributo do ASP.NET Core
GET Lida [HttpGet]
POST Criar [HttpPost]
PUT Atualizar [HttpPut]
DELETE Delete [HttpDelete]

Você já viu como GET as ações funcionam. Vamos aprender mais sobre POST, PUTe DELETE ações.

POST

Para permitir que os usuários adicionem um novo item ao ponto de extremidade, você deve implementar a POST ação usando o [HttpPost] atributo. Quando você passa o item (neste exemplo, uma pizza) para o método como um parâmetro, o ASP.NET Core converte automaticamente qualquer aplicativo/JSON enviado para o ponto de extremidade em um objeto .NET Pizza preenchido.

Aqui está a assinatura do Create método que você implementará na próxima seção:

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

O [HttpPost] atributo mapeia solicitações HTTP POST enviadas usando http://localhost:5000/pizza o Create() método. Em vez de retornar uma lista de pizzas, como vimos com o Get() método, esse método retorna uma IActionResult resposta.

IActionResult informa ao cliente se o pedido foi bem-sucedido e fornece o ID da pizza recém-criada. IActionResult usa códigos de status HTTP padrão, para que possa ser facilmente integrado com os clientes, independentemente do idioma ou plataforma em que eles estão sendo executados.

ASP.NET Core
resultado da ação
Código de estado de HTTP Description
CreatedAtAction 201 A pizza foi adicionada ao cache na memória.
A pizza é incluída no corpo da resposta no tipo de mídia, conforme definido no cabeçalho da accept solicitação HTTP (JSON por padrão).
BadRequest está implícito 400 O objeto pizza do corpo do pedido é inválido.

Felizmente, ControllerBase tem métodos utilitários que criam os códigos de resposta HTTP apropriados e mensagens para você. Você verá como esses métodos funcionam no próximo exercício.

PUT

Modificar ou atualizar uma pizza em nosso inventário é semelhante ao método POST que você implementou, mas ele usa o [HttpPut] atributo e leva no id parâmetro além do Pizza objeto que precisa ser atualizado:

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

Cada ActionResult instância usada na ação anterior é mapeada para o código de status HTTP correspondente na tabela a seguir:

ASP.NET Core
resultado da ação
Código de estado de HTTP Description
NoContent 204 A pizza foi atualizada no cache na memória.
BadRequest 400 O valor Id do corpo do pedido não corresponde ao valor id da rota.
BadRequest está implícito 400 O objeto Pizza do corpo do pedido é inválido.

DELETE

Uma das ações mais fáceis de implementar é a DELETE ação, que leva apenas o id parâmetro da pizza para remover do cache na memória:

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

Cada ActionResult instância usada na ação anterior é mapeada para o código de status HTTP correspondente na tabela a seguir:

ASP.NET Core
resultado da ação
Código de estado de HTTP Description
NoContent 204 A pizza foi excluída do cache na memória.
NotFound 404 Uma pizza que corresponda ao parâmetro fornecido id não existe no cache na memória.

O exercício na próxima unidade demonstra como apoiar cada uma das quatro ações na API da Web.