quinta-feira, 11 de abril de 2019

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/


Nenhum comentário:

Postar um comentário