O documento apresenta uma palestra sobre GraphQL, abordando: 1) Uma breve história do desenvolvimento do GraphQL no Facebook; 2) As principais características como uma única rota e consultas complexas; 3) Vantagens em relação a APIs REST como desempenho e versionamento.
2. Sobre
Wender Machado
(o palestrante)
➔ 4 anos de experiência com
desenvolvimento web
➔ Desenvolvedor Full-stack
na RG Sistemas
➔ Formado em Técnico de
Informática pelo CEFET NF
➔ Graduando em Bacharelado
em Sistemas de Informação
pelo CEFET NF
2
4. Um pouco de contexto
➔ Até 2011 o Facebook tinha aplicativos móveis híbridos:
◆ com diversos problemas de desempenho
◆ e de usabilidade
➔ Em 2012 lançaram a versão nativa do aplicativo para iOS
◆ e, internamente, desenvolveu o GraphQL.
4
Mais em “GraphQL: The Documentary”, disponível no Youtube
5. Um pouco de contexto
➔ Em 2015 o GraphQL foi lançado publicamente.
5
Google trends:
https://trends.google.com.br/trends/explore?date=2015-10-15%202019-11-15&q=graphql
6. Um pouco de contexto
➔ Em 2016 o GitHub adotou o GraphQL em sua API pública:
6
Mais em: https://github.blog/2016-09-14-the-github-graphql-api/
API v4: https://developer.github.com/v4/
“O GraphQL representa um grande avanço no
desenvolvimento de API. Segurança de tipo, introspecção,
documentação gerada e respostas previsíveis beneficiam
os mantenedores e os consumidores de nossa plataforma.”
22. ➔ Evita o under-fetching
➔ Evita o over-fetching
◆ Diminuir o gasto de banda
O cliente decide quais informações quer consumir
22
➔ As consultas podem ser
maiores e mais complexas do
que nas APIs REST
tradicionais
➔ Quantidade imprevisível* de
dados para cada solicitação
25. Descobrir o número de stars e o de pull requests de
um repositório no GitHub
➔ API /v3 (REST):
◆ disparar 3 requisições ao servidor
◆ baixar 83.2 KB de informações gzipadas e cabeçalhos
◆ fazer parse de 768.1 KB de JSON ou 13654 linhas
➔ API /v4 (GraphQL):
◆ disparar 1 requisições ao servidor
◆ baixar 996 B de informações gzipadas e cabeçalhos
◆ fazer parse de 93 B de JSON
25Mais em: https://blog.caelum.com.br/todo-o-poder-emana-do-cliente-explorando-uma-api-graphql/
26. ➔ Simplesmente adicione
campos quando precisar ou
marque-os como obsoletos
quando planejar parar de
usá-los.
Versionamento Evolução contínua da API
26
➔ Inviável implementar
versionamento “tradicional”:
➔ v1/user
➔ v2/user
28. Versionamento Evolução contínua da API
28
➔ Exemplo de
campo obsoleto:
(Plugin VSCode)
Fonte: https://www.apollographql.com/docs/graph-manager/editor-plugins/
30. Questões de Segurança
30
➔ Utilização de Token no cabeçalho
➔ Verificações a partir do usuário que está solicitando alguma
ação
➔ Realizar parse para não expor exatamente o campo do banco
de dados