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!