Olá pessoal, meu nome é Mauricio Junior e hoje eu vou mostrar como consumir o Web Api criado em momentos anteriores. Lembro a você que existem alguns artigos publicados no site www.ecode10.com e mauriciojunior.org, acesse lá e leia por favor ou em caso de dúvidas. Veja o link abaixo, poderá te ajudar também:

 

Link: https://www.ecode10.com/Pesquisar?q=Web%20api

 

Recursos utilizados:

  • Ferramenta de desenvolvimento: Visual Studio
  • Banco de dados: SQL Server
  • Framework: .NET e EntityFramework
  • Plataforma: Web API e ASP.NET
  • Linguagem: C# / CSharp

 

Como você já deve saber, o Web Api é muito importante para você. Principalmente para você que deseja que o software funcione em mais de uma plataforma e ao mesmo tempo. Você acaba fazendo apenas uma vez ao invés de várias, isso significa reaproveitamento de código em desenvolvimento de software.

 

Em momento anteriores aprendemos a buscar os dados com Get, inserir com Post e agora vamos aprender como fazer o delete com Delete do Web Api. Esse é um consumo do Web Api / Web Service por um aplicativo ou site externo, ou seja, depois de criamos todos os métodos do Web Api, criamos outro site para consumir os dados do banco de dados através do Web Api. O delete é bem simples, acredito ser o mais simples para consumir os dados.

 

O exemplo aqui é o preenchimento dos dados no GridView e depois deletar os dados com o clique do usuário. O primeiro passo é gerar um método responsável por identificar o endereço base do Web Api. Vamos utilizar a classe HttpClient e depois gerar uma Uri indicando o endereço do servidor através de uma constante para colocar o cabeçalho do tipo Application/JSon).  Veja a listagem 1.

 

Listagem 1 - Gerando método com endereço base

public static HttpClient getClient()

        {

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(ConstantesUteis.ENDERECO_SERVIDOR);

            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

 

            return client;

        }

 

Antes de deletar é necessário saber quais valores existem dentro do objeto. O objeto nesse caso é o GridView responsável por listar os dados e mostrar para o usuário. A listagem 2 mostra como preencher.

 

Listagem 2 - Preenchendo o GridView

private void preencherGridView()

        {

            var client = HttpClientRequest.getClient();

 

            System.Net.Http.HttpResponseMessage response = client.GetAsync(ConstantesUteis.GET_CONTA_BY_USUARIO + Session["MONEY_IDUSUARIO"].ToString()).Result;

            Uri envioUri = response.Headers.Location;

 

            if (response.IsSuccessStatusCode)

            {

                var _contas = response.Content.ReadAsAsync<IEnumerable<Conta>>().Result;

 

                grdContas.DataSource = _contas;

                grdContas.DataBind();

            }

        }

 

O GridView na parte HTML precisa de algumas propriedades como DataKeyNames e OnRowDeleting. O OnRowDeleting gera um método que pode ser acessado no momento do click do usuário. É necessário colocar um CommandField ButtonType com o nome Delete que busca direto no método dentro do código C#. Veja a listagem 3.

 

Listagem 3 - GridView HTML

<asp:GridView runat="server" ID="grdContas" DataKeyNames="IdConta" AllowPaging="true" 

                        Width="100%" PageSize="50" GridLines="None" AutoGenerateColumns="false" OnRowDeleting="grdContas_RowDeleting">

                    <AlternatingRowStyle BackColor="#f1f1f1" />

                    <HeaderStyle BackColor="#cccccc" />

                    <Columns>

                        <asp:BoundField DataField="IdConta" HeaderText="Id" />

                        <asp:BoundField DataField="DescricaoConta" HeaderText="Nome da Conta" />

                        <asp:CommandField ButtonType="Button" CancelText="Cancelar" DeleteText="Deletar" ShowDeleteButton="true" HeaderText="Deletar" />

                    </Columns>

                </asp:GridView>

 

 

O método delete chamado grdContas_RowDeleting composto pelo nome do objeto grdContas mais o nome RowDeleting colocado na pasta HTML do objeto. Assim fica mais fácil de entender. A primeira linha do código é pegar a chave daquela linha específica clicada. Para isso é importante utilizar o DataKeys e o RowIndex. Com a chave, basta chamar o web service passando o valor pego. Depois de pegar a chave, basta chamar o cliente e o método DeleteAsync passando os valores necessários e pegando o response como resposta. Se o código for com sucesso, basta chamar o método privado responsável por preencher o GridView novamente. Veja a listagem 4.

 

 

Listagem 4 - Método delete

protected void grdContas_RowDeleting(object sender, GridViewDeleteEventArgs e)

        {

            //pegando o valor selecionado no grid

            string _IdConta = this.grdContas.DataKeys[e.RowIndex]["IdConta"].ToString();

 

            var client = HttpClientRequest.getClient();

 

            System.Net.Http.HttpResponseMessage response = client.DeleteAsync(ConstantesUteis.GET_CONTA_ID + _IdConta).Result;

            Uri envioUri = response.Headers.Location;

 

            if (response.IsSuccessStatusCode)

            {

                preencherGridView();

            }

        }

 

Bom, esse método é muito importante para deletar os dados que estão dentro do banco de dados através de uma Web Api criada com o framework da Microsoft. Espero que tenha gostado e que seu exemplo funcione igual ao meu. Em caso de problemas ou dúvida, pode entrar em contato pelo site www.mauriciojunior.org.