Meet GraphQL
ROADMAP
- Devo aprender GraphQL?
- Ferramentas (Relay ou Apollo)
- Performance
- Cache
- Nullability
DEVO APRENDER GRAPHQL?
- Tamanho do projeto e quantidade de dados
- Familiaridade com o protocolo HTTP
- Familiaridade com APIs
- Fit de oportunidades
PERFORMANCE
- Escalabilidade
- Overhead
- Cache
- Prefetch de dados
- N+1
PERFORMANCE - OVERHEAD
Parse: Transformar a query em Abstract Syntax Tree (AST)
Validate: Validar a AST de acordo com o Schema.
Execute: Executar os resolvers para popular os fields de uma query.
PERFORMANCE - N+1
PERFORMANCE - N+1
https://github.com/graphql/dataloader
FERRAMENTAS - APOLLO
- Não tem opinião sobre frameworks. Pode ser integrado em Vue, React, Angular, etc
- Suporta qualquer formato de schema
- Fácil de aprender porém envolve um trabalho mais manual para desenvolver certas features
- Suporta Fragments
FERRAMENTAS - RELAY
- Funciona apenas com React / React Native
- Requer uma certa estrutura no GraphQL schema
- Curva de aprendizado baixa pois a maior parte da complexidade acontece por deixa dos panos.
- Suporta Fragments
- Não suporta subscriptions por padrão
CACHE
- "GraphQL quebra o cache por parte do servidor"
- A maior parte dos clients lidam com os problemas de cache do GraphQL
- HTTP Caching - Client Side e Server Side
- Validation
- Freshness
CACHE - VALIDATION
CACHE - FRESHNESS
NULLABILITY
- Types first
- Diferente de como lidar como valores nulos em Rest APIs
- Fields que não são nulos são marcados com !
- Resolvers retornam dados nulos com sucesso ao invés de retornar um erro
Meet GraphQL
By laurabeatriserafim
Meet GraphQL
- 292