ASP.NET MVC 5 - Criando e Consumindo uma Web API - III


Hoje vou iniciar uma série de artigos que mostra como criar uma WEB API na ASP .NET MVC 5 e depois como consumir essa API em uma aplicação ASP .NET MVC 5.

Continuando a terceira parte do artigo vamos definir o método Action POST para incluir um novo contato.

Criando o método Action Post

Uma requisição HTTP POST é usada para criar um novo registro na fonte de dados na arquitetura RESTful. Então, vamos criar um método Actioin em nosso controller ContatosController para inserir um novo registro de contato no banco de dados usando o Entity Framework.

O método Action que vai manipular a requisição HTTP POST deve começar com uma palavra Post. Pode ser nomeado como Post ou com qualquer sufixo, por exemplo POST(), Post(), PostNovoContato(), PostContatos() são nomes válidos para um método Action que manipula a solicitação HTTP POST.

Para poder incluir um novo Contato e seu Endereço vamos criar um DTO (Data Transfer Object) chamado ContatoEnderecoDTO na pasta Models com o código abaixo:

    public class ContatoEnderecoDTO
    {
        public int ContatoId { get; set; }
        public string Nome { get; set; }
        public string Email { get; set; }
        public string Telefone { get; set; }
        public string Local { get; set; }
        public string Cidade { get; set; }
        public string Estado { get; set; }
    }

A seguir no controlador ContatosController inclua o método PostNovoContato() :

 public IHttpActionResult PostNovoContato(ContatoEnderecoDTO contato)
        {
            if (!ModelState.IsValid || contato == null )
                return BadRequest("Dados do contato inválidos.");
            using (var ctx = new AppDbContext())
            {
                ctx.Contatos.Add(new Contato()
                {
                    Nome = contato.Nome,
                    Email = contato.Email,
                    Telefone = contato.Telefone,
                    Endereco = new Endereco()
                    {
                        Local = contato.Local,
                        Cidade = contato.Cidade,
                        Estado = contato.Estado
                    }
                });
                ctx.SaveChanges();
            }
            return Ok(contato);
        }

Neste código nomeamos o método Action como PostNovoContato, e, o método inclui o parâmetro do tipo ContatoEnderecoDTO , que inclui todas as informações sobre o novo contato.

Fazendo um teste no Postman e enviando um POST para a url https://localhost:44320/api/contatos e os dados no formato JSON no Body do request e com o Header definido para Content-Type igual a 'application/json' :



Observe que não precisamos informar o Id do contato nem do Endereço.

Fazendo uma consulta GET constatamos a inclusão do novo contato:

Assim até agora nossa WEB API esta tratando os seguintes métodos HTTP:

HTTP GET Descrição
https://localhost:44320/api/contatos Retorna todos os contatos sem endereço
https://localhost:44320/api/contatos?incluirEndereco=true Retorna todos os contatos com endereço
https://localhost:44320/api/contatos?id=5 Retorna todos os contatos pelo id
https://localhost:44320/api/contatos?nome=macoratti Retorna todos os contatos pelo nome
HTTP POST  
https://localhost:44320/api/contatos Inclui um novo contato e seu endereço

Na próxima parte do artigo vamos criar o método Action HTTP PUT para alterar um contato.

"E tu, ó menino, serás chamado profeta do Altíssimo, Porque hás de ir ante a face do Senhor, a preparar os seus caminhos;
Para dar ao seu povo conhecimento da salvação, Na remissão dos seus pecados;
Pelas entranhas da misericórdia do nosso Deus, Com que o oriente do alto nos visitou;"
Lucas 1:76-78

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:


José Carlos Macoratti