Bom dia, boa tarde e boa noite devssssss, tudo bem com vocês? Eu estou bem e ansioso para o fim dessa pandemia, mas não estamos aqui para falar disso e sim sobre um pacote incrível existente no .NET que vai facilitar a vida de quem precisa consumir dados de uma ou mais API’s.
Estamos falando sobre o Refit! Esse pacote simplifica toda a parte de consumo, serialização e deserialização das requisições, além de deixar o código muito menor permitindo uma arquitetura mais limpa!
…
Entendendo o Refit
Como de praxe, antes de sairmos codando precisamos entender o que estamos fazendo e qual problema estamos resolvendo, então vamos lá.
O consumo de API’s utilizando .NET não é difícil, MAS dependendo da quantidade de rotas que você necessita consultar ou de como você organiza seu código pode ser que ele fique muito extenso e talvez até ilegível.
Como o consumo de API’s no .NET é algo “padrão” na maioria dos casos, podemos abstrair utilizando uma biblioteca e focar no que realmente importa, o negócio!
E basicamente é isso que o Refit faz, ele abstrai a parte de consumo da API ja trazendo para nós o objeto de acordo com a resposta da API.
…
Mãos no código
Antes de mostrar como funciona o Refit vou demonstrar como seria o consumo de uma API do modo tradicional no .NET e no fim do artigo você pode comparar o quão mais limpo e organizado ficou o código.
O código a seguir consome uma url que traz serializado um objeto do tipo Customer ja existente na aplicação.
Como vocês podem ter visto, o código acima está usando o modo tradicional de consumo de API’s no .NET, esse trecho será simplificado em apenas 1 linha, isso mesmo, UMA linha utilizando o Refit!
É claro que, “por trás dos panos” o Refit vai estar utilizando essa forma de consulta, mas isso será abstraido e não vamos precisar nos preocupar com isso.
Além disso, estamos consumindo a seguinte rota:
https://refitapi.herokuapp.com/api/v1/customer/
Essa rota é de uma API pública que eu fiz para podermos demonstrar nesse artigo, a documentação dela está aqui:
https://refitapi.herokuapp.com/swagger
E o projeto completo dessa API está aqui:
https://github.com/Eschechola/EntityFrameworkInMemoryAPI
Agora que já entendemos um pouco do que acontece por “debaixo dos panos” vamos botar esse Refit em prática!
Pra isso vamos precisar de 1 classe e 1 interface, na classe iremos criar os métodos pra consumir o Refit e na interface vamos definir o contrato no qual o Refit irá se basear para criar seus métodos de consumo.
Parece confuso a primeira vista, mas vai ficar simples, bora lá!
Ah, não podemos esquecer da nossa classe que será a entidade dos métodos de consumo.
Agora que já temos nossa entidade, vamos precisar instalar o Refit no nosso projeto, caso você esteja utilizando o VS2019, pode adicionar o pacote através do NuGet.
Caso você esteja utilizando o VS Code, pode adicionar o pacote usando o seguinte comando:
dotnet add package refit --version 5.2.1
Com o pacote já instalado vamos construir nossa interface, que irá informar para o Refit quais métodos ele deve construir.
Perceba que, cada método tem um tipo de retorno Task
Por fim, nas rotas que necessitam enviar valores pela url basta apenas colocar “{parâmetro}”, com o mesmo nome do parâmetro recebido pelo método.
Bacana, agora quando chamarmos nossa classe do Refit ele irá mapear essa interface e construir os métodos necessários para fazermos as requisições.
Por fim vamos criar agora a classe que irá consumir os métodos do Refit.
Lembra que eu falei pra vocês que iria ser abstraído em uma linha? Vejam a mágica acontecer!
OBS: O mais correto aqui era se utilizar injeção de dependência, mas como não era o intuito do artigo, fiz da forma mais simples.
O foco aqui é especificamente no construtor dessa classe, perceba que, para a varíavel globa privada _customer service, passamos o valor:
RestService.For
E é nesse momento que o Refit mapeia nossa interface e cria os métodos para consumir nossa API.
Depois vem os métodos retornando os valores dos métodos criados pelo Refit.
Com 1 linha de código simplificamos um trecho de código consideravelmente grande, deixando nosso código mais limpo!
Caso você queira testar o código a seguir, eu criei um projeto console apenas pra testar o consumo, NÃO É NECESSÁRIO PARA PODER UTILIZAR O REFIT.
O resultado do teste
…
Conclusão
Hoje nós vimos como simplificar o consumo de API’s no .NET utilizando o Refit, uma requisição que levaria algumas linhas foi reduzida a UMA, além de ficar com uma arquitetura bem bacana agiliza o processo de desenvolvimento!
Por fim eu gostaria de dizer que, esses tempos tivemos pouco conteúdo, porém a partir desse mês de setembro de 2020 iremos ter artigo todas as semanas e a série "Fábrica de Arquitetos" irá continuar!!!
Agradeço a atenção e bons estudos!!!!!
Caso precise entrar em contato, me mande uma mensagem aqui.
Baixe o projeto clicando aqui.