Asp.Net - Consumindo serviços REST com a biblioteca RestSharp



Este mês irei explicar como devemos consumir serviços REST em Asp.Net com o auxílio da biblioteca RestSharp. O modelo REST (Representational State Transfer) tem sido cada vez mais utilizado na implementação de serviços em diversas plataformas. Para entender um pouco mais sobre a tecnologia REST, recomendo a leitura do artigo “AngularJS – Consumindo serviços REST” publicado no mês de Maio de 2016, o qual aborda diversos conceitos sobre este formato de transmissão de dados. Focarei esta dica em um exemplo prático com base nas consultas propostas no artigo supracitado.

Biblioteca RestSharp

 

RestSharp é uma biblioteca cliente “http” poderosa que irá trabalhar com qualquer tipo de tecnologia .Net. (No nosso caso Asp.Net com a linguagem C#) Esta biblioteca inclui o denominado “inbuild” “desserializadores” para suportar o formato XML e JSON. Com base no tipo de conteúdo devolvido pelo servidor, a RestSharp define o “desserializador” adequado. Segue abaixo os tipos de conteúdo suportados:

- Application/Json (JsonDeserialize),
- Application/Xml (XmlDeserialize),
- Text/Json (JsonDeserialize),
- Text/Xml (XmlDeserialize).

 

 

 

Importante salienar que usaremos o padrão JSON.

 

Instalando a RestSharp

Com o Visual Studio aberto inicie um projeto do início do tipo “Asp.Net” clicando em “File/New/Web Site...”. Usaremos a ferramenta “Nuget Package Manager”, para isto clique em “Tools/Nuget Package Manager” escolhendo a opção “Manage Nuget Packages For Solution ...”

Ver Imagem 01.

 

Figura 01: Manage Nuget Packages for Solution.

Com o “Nuget” podemos instalar facilmente bibliotecas em qualquer tipo de solução .Net. Ao abrir a tela pesquise pelo nome “RestSharp” no campo de pesquisa localizado na região supeior direita, conforme Imagem 02.


Figura 02: RestSharp.

Ao escolher o item “RestSharp” Clique no botão “Install” e logo em seguida adicione os pacotes no projeto. O processo pode demorar alguns minutos, pois o mesmo irá realizar o download automaticamente. No término do processo será criada uma pasta chamada “Bin” com todas as dlls utiliadas, sendo: “RestSharp.dll”, “RestSharp.Portable.Core.dll” e “RestSharp.Portable.HttpClient.dll”. Ver Imagem 03.


Figura 03: Pasta Bin.

 

 

Criando o Exemplo


Nosso exemplo irá consumir um serviço REST do site http://jsonplaceholder.typicode.com e retornará alguns dados como Nome, E-mail, Site e Id. Faremos a consulta através do “ID”.
Adicione um Web Form no projeto clicando com o botão direito sobre o mesmo escolhendo “Add/Add New Item.../Web Form”.

No meu caso defini como “FrmRest.aspx”. Insira na tela alguns componentes como: uma Table com cinco linhas e dentro da mesma 1 Button e 4 Labels (Nome, E-mail, Site, Id). Ver Figura 04.


Figura 04: Lay-Out proposto.

O código para esta tela é bem simples e pode ser conferido na listagem 01.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmRest.aspx.cs" Inherits="FrmRest" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Asp.Net - Consumindo serviços REST com a biblioteca RestSharp</title>
</head>
<body>
    <form id="form1" runat="server">
    <div class="auto-style1">
<strong style="text-align: left">Asp.Net - Consumindo serviços REST com a biblioteca RestSharp</strong></div>
        <table>
            <tr>
                <td>
<asp:Button ID="btnExecutar" runat="server" OnClick="Button1_Click" Text="Executar" style="text-align: center" Width="153px" />
                </td>
            </tr>
            <tr>
                <td>
<asp:Label ID="lblNome" runat="server" Text="Nome: " Font-Bold="True" Font-Size="Large"></asp:Label></td>
            </tr>
            <tr>
                <td>
<asp:Label ID="lblEmail" runat="server" Text="E-mail:" Font-Bold="True" Font-Size="Large"></asp:Label>
                </td>
            </tr>
            <tr>
                <td>
<asp:Label ID="lblSite" runat="server" Text="Site:" Font-Bold="True" Font-Size="Large"></asp:Label></td>
            </tr>
            <tr>
                <td>
<asp:Label ID="lblId" runat="server" Text="Id:" Font-Bold="True" Font-Size="Large"></asp:Label></td>
            </tr>
        </table>
        <br />
    </form>
</body>
</html>


Listagem 01.

 

No código fonte o primeiro passo seria adicionar a biblioteca RestSharp com o auxílio da cláusula “using”.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RestSharp;


Para consumir os dados é necessário criar uma classe com todos os atributos exatamente iguais aos do objeto JSON. Para isto criamos uma classe chamada “Usuario” com os atributos “Name”, “Email”, “WebSite” e “Id”.

public class Usuario
    {
        public string Name
        {
            get;
            set;
        }
        public string Email
        {
            get;
            set;
        }
        public string Website
        {
            get;
            set;
        }
        public string Id
        {
            get;
            set;
        }
    }


No evento “Click” do botão iremos realizar todo o processo responsável por consumir e nos retornar os dados.

 

protected void Button1_Click(object sender, EventArgs e)
{
var client = new  RestClient("http://jsonplaceholder.typicode.com/users/");
     var request = new RestRequest("3", Method.GET);
     var response = client.Execute<Usuario>(request);
    
Usuario usuario = response.Data;
lblNome.Text = string.Format("Nome: {0}", usuario.Name);
lblEmail.Text = string.Format("E-mail: {0}", usuario.Email);
lblSite.Text = string.Format("Site: {0}", usuario.Website);
     lblId.Text = string.Format("Id: {0}", usuario.Id);
}


Deveremos instanciar o objeto “RestClient” passando no construtor o endereço onde está localizado o serviço REST. O objeto “RestRequest” irá realizar o “pedido” dos dados pelo parâmetro utilizando o método “Method.Get”, ou seja, passaremos o valor inteiro “3”. Através do método “Execute”, presente no objeto “client” teremos um retorno dos dados exatamente no formato da classe “Usuario” criada anteriormente. O método “response.Data” irá alimentar com os registros a classe Usuario. Para atribuir o resultado aos Labels, basta lermos os atributos da classe através do “Get”. Ao clicar no botão “Executar” teremos um resultado idêntico ao da Figura 05.



Figura 05: Consumindo dados.

 

Conclusões


Trabalhamos neste artigo com a biblioteca “RestSharp”, um pacote open-source disponível para a plataforma .Net. Vimos também que com uma quantidade mínima de código pudemos consumir facilmente um serviço REST.
Vou ficando por aqui desejando um grande abraço e até o mês que vem.

Referências


http://restsharp.org/

Sobre o Autor

Thiago Cavalheiro Montebugnoli adora aprender novas tecnologias. Formado pela Faculdade de Tecnologia de Botucatu – SP (FATEC), já desenvolveu softwares utilizando a plataforma .NET, Delphi junto com Banco de Dados SQL Server e Firebird. Como experiências profissionais mais recentes, possui em seu currículo sua atuação no Centro de Processamento de Dados da Prefeitura Municipal de Itaí-SP e atualmente compõe a equipe da Coordenadoria Tecnologia da Informação no IFSP – Instituto Federal do Estado de São Paulo em Avaré. Além disso, é colunista mensal da Revista The Club Megazine e é consultor Técnico do The Club. Possui as seguintes certificações: MCP - Microsoft Certified Professional, MCTS - Microsoft Certified Technology Specialist, MCAD - Microsoft Certified Application Developer e  MCSD - Microsoft Certified Solution Developer.

E-mail: rico@capim.art.br

The Club - O Maior Clube de programadores do Brasil