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