Desenvolvimento - C#
Consumindo um Web API em C#
Veja nesse artigo como pegar os dados de um Web API de forma correta e preencher um GridView ou DataList dinamicamente.
por Mauricio JuniorIntrodução
Olá pessoal, hoje eu vou falar e mostrar como consumir Web API de forma simples e fácil. Depois de ter o Web API gerado e com os dados, é necessário consumir e esse consumo pode ser de todas as partes, por exemplo: Web Site, smartphone, TV, Tablets e mais. Isso porque os dados trafegados utilizam REST e Json. Agora vamos consumir esse Web API usando a linguagem C# .NET.
Esse link pode te ajudar a entender melhor sobre Web API: http://www.linhadecodigo.com.br/artigo/3655/criando-um-web-api-em-csharp.aspx
Utilizado neste artigo:
- Ferramenta Visual Studio 2012
- Linguagem de programação C#
- Tecnologia utilizada, WebForm, Web API, Rest e Json.
Neste artigo eu vou mostrar como pegar os dados de um Web API de forma correta e mostrar como preencher um GridView ou DataList dinamicamente, ou seja, vamos usar o método GET. Em 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 no artigo sobre Como criar um WebAPI em C#, 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
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" /> <asp:BoundField DataField="Nome" HeaderText="Nome" /> </Columns> </asp:GridView>
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<IEnumerable<Usuario>>().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.
ID | Nome |
203 | Mauricio 17 |
204 | Mauricio 1888 |
208 | Mauricio 22 |
209 | Mauricio 23 |
211 | Mauricio 25 |
212 | Mauricio 26 |
213 | Mauricio 27 |
214 | Mauricio 28 |
215 | Mauricio 29 |
234 | Mauricio 48 |
235 | Mauricio 49 |
237 | Mauricio Junior1 |
255 | Mauricio Junior19 |
263 | Mauricio Junior27 |
264 | Mauricio Junior28 |
265 | Mauricio Junior29 |
266 | Mauricio Junior30 |
267 | Mauricio Junior31 |
268 | Mauricio Junior32 |
269 | Mauricio Junior33 |
Tabela 1: Grid preenchido pelo Rest
Lembre-se que para preencher o grid, os dados retornados do Web API devem ser iguais as propriedades do GridView dentro da sua página, pelo contrários pode dar erro no momento de preencher o objeto na tela.
Conclusão
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 .