Acessando serviços RESTful com a biblioteca RestSharp

NetCoders
netcoders
Published in
6 min readOct 13, 2015
restsharp-00

O modelo conhecido como REST (sigla de “Representational State Transfer”) tem sido cada vez mais utilizado na implementação de serviços em diferentes plataformas, correspondendo a uma das bases empregadas na concepção de tecnologias como o ASP.NET Web API e o Node.js. Levando em conta tal cenário, é inegável que em algum momento desenvolvedores .NET precisem consumir dados disponibilizados por aplicações deste tipo.

Uma solução simples e que pode atender de forma satisfatória a este tipo de demanda é a biblioteca RestSharp, um projeto open source que disponibiliza diversos recursos com vistas a facilitar a interação com serviços RESTful. Este artigo tem por objetivo demonstrar o uso deste package, a partir de um exemplo prático que será detalhado nas próximas seções.

Consumindo um serviço Web API via RestSharp

Para o exemplo aqui descrito será utilizado o serviço Web API (um catálogo de produtos) implementado no post:

Será modificada também uma aplicação (TesteConsumoWebAPI) implementada em outro artigo indicado a seguir, a fim de possibilitar o consumo e exibição de dados do catálogo em questão:

Além dos projetos mencionados, serão utilizados ainda os seguintes recursos:

  • O Microsoft Visual Studio Community 2015 como IDE de desenvolvimento;
  • O .NET Framework 4.6 e o Microsoft ASP.NET MVC 5 (o projeto TesteConsumoWebAPI foi criado a partir destes frameworks);
  • A versão 105.2.3.0 do package RestSharp.

Antes de adicionar a biblioteca RestSharp à aplicação TesteConsumoWebAPI, será preciso configurar o utilitário NuGet para que o mesmo também utilize como fonte para pesquisa de packages o seguinte endereço:

Acessar para isto o menu Tools > NuGet Package Manager > Package Manager Settings (Imagem 1).

restsharp-01

Imagem 1: Configurando o uso do NuGet

Na janela “Options” especificar o caminho indicado anteriormente para a pesquisa de packages do NuGet (Imagem 2):

restsharp-02

Imagem 2: Adicionando uma outra fonte para pesquisas no NuGet

Clicar então com o botão direito do mouse sobre o item References do projeto TesteConsumoWebAPI (Imagem 3), acionando a opção “Manage NuGet Packages…”.

restsharp-03

Imagem 3: Acessando a tela para pesquisa através do NuGet

Na janela “NuGet Package Manager” localizar e proceder com a instalação da biblioteca RestSharp (conforme detalhado na Imagem 4).

restsharp-04

Imagem 4: Adicionando a biblioteca RestSharp ao projeto de testes

Alterar agora o arquivo Web.config (Listagem 1), adicionando os itens “UrlBase” (caminho-base do serviço Web API) e “CaminhoRecurso” (nome do Controller/recurso) na seção “appSettings” deste documento.

[code language=”xml”]
<?xml version=”1.0" encoding=”utf-8"?>
<configuration>
<appSettings>

<add key=”UrlBase” value=”http://localhost:55042/testes/" />
<add key=”CaminhoRecurso” value=”produtos” />
</appSettings>

</configuration>
[/code]

Listagem 1: Arquivo Web.config

Alterar o Controller Produtos adicionando ao mesmo a Action ExemploConsumoRestSharp (Listagem 2):

  • Uma nova instância da classe RestClient será gerada, de forma a possibilitar a comunicação com o serviço de consulta ao catálogo de produtos. O construtor deste objeto receberá como parâmetro o endereço do serviço, o qual foi especificado anteriormente no arquivo Web.config;
  • Uma referência da classe RestRequest também será criada, sendo repassados ao construtor desta estrutura o caminho do recurso (no caso o Controller do catálogo de produtos) e o tipo da requisição (GET, por se tratar de uma consulta);
  • Através do objeto do tipo RestClient será encaminhada uma solicitação ao serviço de testes, por meio de uma chamada ao método Execute (este último recebe como parâmetro a referência de RestRequest criada no passo anterior). O retorno desta ação será uma instância de IRestResponse, na qual a propriedade Data representa uma coleção de instâncias com dados de produtos;
  • Concluindo a codificação deste método, os dados de produtos serão informados como parâmetro ao se invocar o método View.

OBSERVAÇÃO: os tipos RestClient, RestRequest e IRestResponse encontram-se definidos no namespace RestSharp.

[code language=”csharp” highlight=”7,15"]
using System.Collections.Generic;
using System.Web.Mvc;
using System.Configuration;
using System.Net.Http;
using System.Net.Http.Headers;
using TesteConsumoWebAPI.Models;
using RestSharp;

namespace TesteConsumoWebAPI.Controllers
{
public class ProdutosController : Controller
{

public ActionResult ExemploConsumoRestSharp()
{
RestClient client = new RestClient(
ConfigurationManager.AppSettings[“UrlBase”]);

RestRequest requisicao = new RestRequest(
ConfigurationManager.AppSettings[“CaminhoRecurso”],
Method.GET);

IRestResponse<List<Produto>> resposta =
client.Execute<List<Produto>>(requisicao);
List<Produto> produtos = resposta.Data;

return View(produtos);
}
}
}
[/code]

Listagem 2: Classe ProdutosController

Já na Listagem 3 está o código referente à View ExemploConsumoRestSharp (a ser utilizada na geração da visualização HTML da Action de mesmo nome).

[code language=”html”]
@model IEnumerable<TesteConsumoWebAPI.Models.Produto>

<h2>Catálogo de Produtos (Exemplo de consumo de um serviço Web API com RestSharp)</h2>

<table class=”table”>
<tr>
<th style=”width: 200px;”>
Cód.Produto
</th>
<th>
Nome do Produto
</th>
<th style=”width: 120px; text-align: right;”>
Preço
</th>
</tr>

@foreach (var item in Model)
{
<tr>
<td>
@item.CodProduto
</td>
<td>
@item.NomeProduto
</td>
<td style=”text-align: right;”>
@item.Preco.ToString(“0.00”)
</td>
</tr>
}

</table>
[/code]

Listagem 3: Arquivo ExemploConsumoRestSharp.cshtml

Por fim, na Listagem 4 está a implementação da View Index.cshtml, contemplando a chamada à Action ExemploConsumoRestSharp.

[code language=”html” highlight=”16"]
@{
ViewBag.Title = “Home Page”;
}

<div class=”jumbotron”>
<h1>Compressão em serviços Web API</h1>
<p class=”lead”>Exemplo de aplicação que consome os dados compactados de um serviço Web API.</p>
</div>

<p>
Clique em um dos links abaixo para consultar os produtos disponíveis:
</p>
<ul>
<li>@Html.ActionLink(“Consumindo os dados em .NET”, “ExemploConsumoDotNet”, “Produtos”)</li>
<li>@Html.ActionLink(“Consumindo os dados em jQuery”, “ExemploConsumojQuery”, “Produtos”)</li>
<li>@Html.ActionLink(“Consumindo os dados com RestSharp”, “ExemploConsumoRestSharp”, “Produtos”)</li>
</ul>
[/code]

Listagem 4: Arquivo Index.cshtml

Testes

Para a realização dos testes descritos nesta seção será necessário que:

  • O serviço de consulta ao catálogo de produtos esteja em execução;
  • Iniciar a aplicação TesteConsumoWebAPI a partir do Visual Studio.

Na Imagem 5 está a tela inicial da aplicação TesteConsumoWebAPI (o link para o teste envolvendo o uso da biblioteca RestSharp está destacado em vermelho).

restsharp-05

Imagem 5: Tela inicial da aplicação TesteConsumoWebAPI

Ao acionar o link “Consumindo os dados com RestSharp” será exibida a listagem de produtos obtida a partir do processamento da Action ExemploConsumoRestSharp (Imagem 6).

restsharp-06

Imagem 6: Consulta ao catálogo de produtos via RestSharp

Conclusão

A biblioteca RestSharp é mais uma das opções para o uso de serviços RESTful em aplicações .NET (alternativamente, o package Microsoft ASP.NET Web API 2.2 Client Libraries também poderia ser utilizado). A intenção ao se empregar esta biblioteca está em simplificar a interação com Web APIs, através de um processo simplificado de montagem das requisições que serão enviadas a um serviço.

Espero que este conteúdo possa ter sido útil.

Até uma próxima oportunidade!

Referências

ASP.NET Web API
http://www.asp.net/web-api

RestSharp — Wiki
https://github.com/restsharp/RestSharp/wiki

--

--