O X do Xamarin Forms — Refit

Fala galera,
beleza?
Quantos apps consumindo api's Rest você ja fez? Ou quantas vezes ja teve a necessidade consumir uma api Rest ? Aposto que respondeu varias vezes não?
Toda vez que precisamos consumir uma Api Rest nós acabamos criando nossas classes com base no HttpClient, configurando e diversas vezes temos ate um mini framework.
Certo, mas se tivéssemos um pacote que resolvesse todos os nossos problemas de consumo de API? E ainda se ele tivesse uma implementação simples ?
É ai que entra o Refit ! Para quem desenvolve para iOS e Android com as linguagens nativas ele é igual aos pacotes Retrofit no Android (inspirado nesse inclusive) ou Alamofire no iOS.
Refit transforma uma api HTTP em interface !! Alem de oferecer suporte a async/await e ReactiveX!
Então bora ver como implementar!
Configurando o Refit
Vamos ao nosso querido nuget baixar o pacote do Refit e instalar no projeto compartilhado :

Pronto! Sério mesmo, é só isso :D
Utilizando o Refit
Vamos criar uma aplicação simples consumindo uma api para testes : https://jsonplaceholder.typicode.com (inclusive indico esta se você quiser uma api simples para testar o consumo de serviços Rest :D ).
Primeiro vamos criar uma classe simples de EndPoints para guardar a url base do nosso serviço Rest :
Vamos criar um objeto Usuario para o retorno json da API :
{
“userId”: 1,
“id”: 1,
“title”: “delectus aut autem”,
“completed”: false
}
Dica : se quiser criar objetos json de forma facil clique aqui.
Agora vamos a base de tudo, vamos criar uma Interface com as chamadas da nossa API :
Vira que não precisamos referenciar o famoso Newtonsoft? O Refit ja retorna o objeto convertido para nós.
Na declaração basta adicionar a propriedade Get com o path do método da Api que deseja utilizar. Caso seja Post é só alterar o verbo !
Vamos criar uma tela para exibir os dados :
E em nossa ViewModel a chamada do Refit :
Basicamente nos utilizamos o método RestService.For<IRestApi>(EndPoints.BaseUrl); para instanciar a API que queremos utilizar.
Em seguida basta chamar o método da API : await usuarioAPI.GetTodos();
Mais simples que implementar sua classe HttpClient não?
Refit permite a utilização de :
Atributos de Api como por exemplo : [Get(“/users/list?sort=desc”)]
É possível enviar objetos no post :
[Post(“/usuario/incluir”)] Task<Usuario> IncluirUsuario([Body(BodySerializationMethod.Json)] Usuario usuario);
Existem diversas outras opções de implementação como parâmetros QueryString, seus próprios parâmetros customizados e etc. Pode conferir toda as implementações no repositório oficial clicando aqui.
Refit exige pouco código/pouca implementação eu recomendo seu uso sempre que for consumir uma API Rest!!
Caso queira baixar o código utilizado no Exemplo: Clique aqui.
Quer ver outros artigos sobre Xamarin ? Clique aqui.
Espero ter ajudado!
Aquele abraço!