ASP .NET Core - Criando recursos com HTTP POST
Hoje veremos como criar recursos usando o atributo HttpPost em uma Web API da ASP .NET Core. |
A ASP .NET Core permite criar serviços RESTful, ou seja, aderente ao estilo REST, também conhecidos como Web APIs ou APIs da Web, usando a linguagem C#.
Para lidar com as requisições, uma WEB API ASP .NET Core usa os Controllers ou controladores que são classes C# que derivam da classe ControllerBase.
Assim, os controladores devem derivar da classe ControllerBase e não da classe Controller.
A classe Controller (que é derivada da classe ControllerBase) inclui suporte a views e à manipulação de páginas web e não à requisições de uma WEB API.
Já a classe ControllerBase fornece muitas propriedades e métodos para tratar com requisições HTTP.
A seguir temos alguns métodos fornecidos pela classe ControllerBase:
Para usar os últimos cenários de roteamento no ASP.NET Core, especifique a versão de compatibilidade com o registro de serviços MVC em Startup.ConfigureServices:
...
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
...
|
Criando um recurso com HttpPost
Ao criar um recurso em uma WEB API usamos o método HTTP POST e decoramos o método do controlador com o atributo HttpPost passando os dados a serem criados no corpo da requisição.
No trecho de código a seguir temos um controlador relacionado com clientes, chamado ClientesController, que inclui dados de um novo cliente.
[HttpPost]
public async Task<ActionResult<Cliente>> Post([FromBody] Cliente cliente)
{
_context.Clientes.Add(cliente);
await _context.SaveChangesAsync();
return CreatedAtRouteResult(nameof(GetCliente), new { id = cliente.Id }, cliente);
}
|
Qual o retorno que um método HTTP POST deve ter ?
O retorno deve ser o status code : 201 Created.
Para isso devemos colocar no cabeçalho Location da resposta HTTP a URL do novo recurso criado e, além disso, no corpo da resposta, devemos colocar o novo recurso.
Para nós ajudar, a ASP .NET Core fornece a classe CreatedAtRoutedResult que é um ActionResult que retorna uma response '201 Created' com o header Location.
Assim CreatedRouteResult :
O trecho de código o atributo [FromBody] indica que a informação do cliente vem no body da requisição HTTP, e, o retorno usa CreateAdRouteResult() para retornar '201 Created' caso o recurso tenha sido criado.
Nota: Podemos aplicar o atributo [ApiController] a uma classe do controlador para habilitar comportamentos específicos da WEB API. Usando este atributo não precisamos utilizar os atributos [FromBody] nem realizar a vlaidação do ModelState.
Na próxima parte do artigo veremos como atualizar um recurso usando HTTP PUT.
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core MVC - CRUD básico com ADO .NET - Macoratti
ASP .NET Core - Implementando a segurança com ... - Macoratti
ASP .NET Core - Acessando dados com Entity Framework ... - Macoratti
ASP .NET Core - Gerenciador de Despesas Pessoais com ... - Macoratti
ASP .NET Core - Criando sua primeira Web API com ASP ... - Macoratti
ASP .NET Core - Criando uma Web API com CRUD básico ... - Macoratti
ASP .NET Core - Criando uma API CRUD - I - Macoratti
Minicurso ASP .NET Core 2.0 - Criando uma Web API - YouTube
Curso ASP .NET Core 2.0 - Comprar em Macoratti.net