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


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 oitava parte do artigo vamos consumir o método HTTP DELETE da Web API que permite excluir um  contato.

Consumindo uma WEB API - Método DELETE

Para consumir o método DELETE da API vamos criar um método Action Delete no controlador ContatosController que vai permitir excluir os dados de um contato usando o método Delete() da Web API.

Para isso teremos que criar o método Delete:

1 - Delete(int? id) - HttpGet

        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            ContatoViewModel contato = null;
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://localhost:44320/api/");
                //HTTP DELETE
                var deleteTask = client.DeleteAsync("contatos/" + id.ToString());
                deleteTask.Wait();
                var result = deleteTask.Result;

                if (result.IsSuccessStatusCode)
                {
                    return RedirectToAction("Index");
                }
            }
            return View(contato);
        }
         return View(contato);
      }

No código acima verificamos se o id informado não é null e enviamos uma requisição DELETE para URI definida da nossa web api usando o método DeleteAsync() passando o endpoint e o id do contato.

Aqui não vamos criar uma view mas iremos definir o código que solicita a confirmação da exclusão do contato na view Index.cshtml incluindo a linha de código azul conforme abaixo:

@model IEnumerable<Mvc5_Contatos.Models.ContatoViewModel>
@{
    ViewBag.Title = "Index";
}
<h2>Relação de Contatos</h2>
@using (Html.BeginForm("Search", "Contatos", FormMethod.Get))
{
    <input type="text" name="nome"/>
    <input type="submit" name="submit" value="Procurar" />
}
<p>
    @Html.ActionLink("Criar Novo Contato", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Nome)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Telefone)
        </th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Nome)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Email)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Telefone)
            </td>
            <td>
                @Html.ActionLink("Editar", "Edit", new { id = item.ContatoId }) |
                @Html.ActionLink("Detalhes", "Details", new { id = item.ContatoId }) |
                @Html.ActionLink("Deletar", "Delete", new { id = item.ContatoId }, 
new { onclick = "return confirm('Deseja realmente deletar este contato ?');" })
            </td>
        </tr>
    }
    <tr>
        <td>
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        </td>
    </tr>
</table>

Testando o método Delete que vai usar o método Delete da API

Executando o projeto e acessando o link Contatos teremos a view exibida conforme abaixo:

Selecionando o contato Janis Joplin clicando no link Deletar teremos a janela de confirmação para excluir ou não o contato:

Confirmando a exclusão voltaremos para a view Index.cshtml onde temos que o contato foi excluido:

Vemos assim que os dados do contato selecionado foram excluídos das tabelas Contatos e Enderecos.

Na próxima parte do artigo vamos definir o método para exibir os detalhes do Contato.

"Disse-lhes, pois, Jesus: Quando levantardes o Filho do homem, então conhecereis que EU SOU, e que nada faço por mim mesmo; mas isto falo como meu Pai me ensinou."
João 8:28

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