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


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 PUT para alterar as informações de um contato.

Criando o método Action Put

O método HTTP PUT é usado para atualizar um registro existente na fonte de dados na arquitetura RESTful.

Vamos criar um método Action no controller ContatosController para atualizar um registro de contato existente no banco de dados usando o Entity Framework. Este método que vai manipular a requisição HTTP PUT deve começar com uma palavra Put. Pode ser nomeado Put ou com qualquer sufixo, por exemplo. PUT(), Put(), PutContato(), PutContatos() são nomes válidos.

Para poder atualizar os dados de um contato e seu endereço  definir o método Put em ContatosController conforme abaixo:

        public IHttpActionResult Put(Contato contato)
        {
            if (!ModelState.IsValid || contato == null )
                return BadRequest("Dados do contato inválidos");
            using (var ctx = new AppDbContext())
            {
                var contatoSelecionado = ctx.Contatos.Where(c => c.ContatoId == contato.ContatoId)
                                                           .FirstOrDefault<Contato>();
                if (contatoSelecionado != null)
                {
                    contatoSelecionado.Nome = contato.Nome;
                    contatoSelecionado.Email = contato.Email;
                    contatoSelecionado.Telefone = contato.Telefone;
                    ctx.Entry(contatoSelecionado).State = EntityState.Modified;
                    var enderecoSelecionado = ctx.Enderecos.Where(e =>
                                                  e.EnderecoId == contatoSelecionado.Endereco.EnderecoId)
                                                  .FirstOrDefault<Endereco>();
                    if (enderecoSelecionado != null)
                    {
                       enderecoSelecionado.Local = contato.Endereco.Local;
                       enderecoSelecionado.Cidade = contato.Endereco.Cidade;
                       enderecoSelecionado.Estado = contato.Endereco.Estado;
                        ctx.Entry(enderecoSelecionado).State = EntityState.Modified;
                    }
                    ctx.SaveChanges();
                }
                else
                {
                    return NotFound();
                }
            }
            return Ok($"Contato {contato.Nome} atualizado com sucesso");
        }

Neste código nomeamos o método Action como Post(), e, o método inclui o parâmetro do tipo Contato , que inclui as informações que desejamos alterar para um contato e seu endereço.

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 temos que informar o Id do contato.

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
HTTP PUT  
https://localhost:44320/api/contatos Altera os dados de um contato e seu endereço

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

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