Ações CRUD no ASP.NET Core
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
, PUT
e 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.