API GraphQL com Spring Boot

Bom dia pessoal!

Venho hoje compartilhar com vocês a experiência que tive utilizando uma tecnologia diferente para criação de apis, a API GraphQL.

Recentemente assisti uma palestra gravada pela InterCon Code Innovation que foi upada pela IMaster no youtube (palestra pode ser encontrada aqui: https://www.youtube.com/watch?v=DMWHBO2y5sU) onde são apresentados os paradigmas de uma nova forma de criação de API diferente da já difundida API Rest, a API GraphQL.

O conceito de API GraphQL foi criado em 2012 pelo Facebook e implementado pela mesma ainda nessa época, porém, apenas em 14 setembro de 2015 que foi disponibilizado para a comunidade (https://code.facebook.com/posts/1691455094417024)

Devido ao bum de aplicações web e mobile utilizando API’s recentemente, o GraphQL vem ganhando muita força, pelo fato de melhor atender aplicações front-end (como aplicações mobile, angular, react, entre outras) quando comparado com API’s Rest, pela sua flexibilidade em trazer respostas em formatos variados para os consumidores do serviços.

Pra não ficar só na teoria, coloquei a mão na massa e criei minha própria API GraphQL usando Java (lembrando que existe para praticamente todas as linguagens) com Spring Boot e Spring Data.

Achei muito bom os resultados. Quem tiver interesse, pode encontrar o projeto aqui:

Detalhei bastante o README, explicando boas práticas na utilização do GraphQL com o Spring Data, além de, como realizar testes da API usando o GraphI (interface gráfica), Postman/Insomnia.

Lembrando que não existe melhor ou pior, a API GraphQL não exclui a API Rest, ou vice-versa. Elas são ferramentas, que, dependendo da situação, é melhor utilizar uma ou outra. É a história do marceneiro, se você perguntar se ele prefere martelo ou serrote, ele vai dar risada.

Qualquer sugestão de melhoria no código ou dúvidas sobre o funcionamento estou a disposição. Bom final de semana a todos!

2 curtidas

Obrigador por compartilhar @AugustoMesquita.

Com a experiência que teve e com o conteúdo que estudou, você consegue dizer em quais cenários GraphQL é melhor ou pior que Rest? Ou o que analisar num projeto antes de tomar a decisao de qual estratégia deveria ser usada?