Olá pessoal, hoje eu vou falar de Web API parte 2 da forma bem simples e fácil. No artigo anterior criamos a parte do banco de dados e exportamos os dados em forma de XML ou Json. Agora vamos consumir esse Web API usando a linguagem C# .NET. 

Antes de começar a falar da parte 2, peço para que leia a parte 1 localizada no endereço abaixo. Essa parte 2 é exatamente continuação da parte 1 e sem ela você não vai entender o que falarei aqui.
Artigo anterior: http://ecode10.com/artigo/1725/criando-e-consumindo-web-api-parte-1

Utilizado neste artigo:

Ferramenta Visual Studio 2012
Linguagem de programação C#
Tecnologia utilizada, WebForm, Web API, Rest e Json.

Nessa parte 2 vou mostrar como pegar os dados do Web API de forma correta preencher um GridView ou DataList dinamicamente, ou seja, vamos usar o método GET. Outros artigos eu mostro como fazer PUT, DELETE e POST dos dados.

Você pode consumir o método GET usando o mesmo projeto, mas o ideal é criar um novo projeto do tipo WebForm para consumir o Rest. Como falei anteriormente na parte 1, o Web API veio para substituir o Web Service que se tornou lento mediante a nova tecnologia. 

Primeiro passo

Criar um novo projeto do tipo WebForm, o mais comum entre os desenvolvedores de software, usando a linguagem C# ou VB. Dentro da página default.aspx e na parte de HTML, coloquei o objeto GridView. Esse objeto traz apenas o nome do usuário vindo do Rest consumido. 

Listagem 1 - Lista de usuário

       
             

Agora temos que preencher esse GridView com os dados vindo do Rest criado no artigo parte 1. 

Segundo passo

O segundo passo é feito dentro da linguagem C#, neste caso o default.aspx.cs. Primeiro declarei duas variáveis. Uma do System.Uri e outra do System.Net.Http.

Listagem 2 - Declaração de variável

HttpClient client;
Uri usuarioUri;

Agora no construtor do método é necessário indicar o endereço do site e o tipo de retorno, que no nosso caso é o Json. 

Listagem 3 – Construtor

public _default()
{
if (client == null)
       {
        client = new HttpClient();
              client.BaseAddress = new Uri("http://localhost:1020");
              client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
}
}

Note que na listagem 3, o tipo do cabeçalho do Rest é o application/json baseado no HttpClient(). 

No Page_Load da classe default.cs eu chamei outro método chamado getAll. Listagem 4. O método getAll() busca através do Web API o link e os dados para preencher o GridView. 

Listagem 4 - Page_Load
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
       {
        getAll();
}
}
Passando para o método getAll(), a chamada da url se torna simples e os dados retornados são pegos através de um Enumerable. Listagem 5.

Listagem 5 - Chamando o rest e preenchendo o grid
private void getAll()
        {
//chamando a api pela url
            System.Net.Http.HttpResponseMessage response = client.GetAsync("api/usuario").Result;

//se retornar com sucesso busca os dados
            if (response.IsSuccessStatusCode)
            {
 //pegando o cabeçalho
                usuarioUri = response.Headers.Location;

 //Pegando os dados do Rest e armazenando na variável usuários
                var usuarios = response.Content.ReadAsAsync>().Result;

  //preenchendo a lista com os dados retornados da variável
                GridView1.DataSource = usuarios;
                GridView1.DataBind();
            }
              //Se der erro na chamada, mostra o status do código de erro.
else
                Response.Write(response.StatusCode.ToString() + " - " + response.ReasonPhrase);
        }

Em cada linha da listagem 5 existe uma explicação simplificada do que é feito. O resultado final dessa chamada é o grid preenchido rapidamente. Imagem 1.


Imagem 1 - Grid preenchido pelo Rest

Espero que tenha gostado e em breve publico mais um artigo falando e mostrando como excluir, incluir e pesquisar algum dado usando o Rest e Web API da Microsoft. Qualquer dúvida, pode entrar em contato pelo site www.mauriciojunior.org