Palestra realizada no meetup da comunidade RubyOnRio em 04/06/2019.
Link do projeto de exemplo apresentado ao fim da palestra: https://github.com/fernandohenriques/graphql-on-rails
9. GraphQL
➔ Criada pelo Facebook
➔ Open-source
➔ Linguagem de consulta de dados
➔ Não é um protocolo para APIs,
mas funcionando como um
➔ Agnóstico: independe de
linguagem ou banco de dados
➔ É uma spec!
Protocolo para APIs ?
15. ● Representational State Transfer
● Verbos HTTP (GET, POST, PUT, DELETE, HEAD…)
● Resource based URLs - Endpoint (/movie/10)
● RESTful: capacidade de determinado sistema aplicar os
conceitos REST
REST (ful) API
29. 1. Single endpoint
2. Well defined contract (tem schema, é tipado - o REST é
schemaless, não tem contrato)
3. No more overfetching
4. No more underfetching (vários endpoints para uma feature)
Conceitos fundamentais do GraphQL
30. ● Documentação: auto-documentação através do Schema
○ Chamada de introspection retorna o Schema
● Legibilidade da API: sem “salada” de URLs
● Menos tráfego de dados no cliente: payload menor
● Tempo de desenvolvimento do back-end focado em regras
de negócio e qualidade, e não em “ajudar” o front-end
Problemas comuns que o GraphQL resolve
33. Int: A signed 32‐bit integer
Float: A signed double-precision
floating-point value
String: A UTF‐8 character
sequence
Boolean: True ou false
ID: Unique identifier (não legível
para humanos)
Tipos primitivos
Tipos e schema
Enum, custom scalar, listas e non-null
40. ★ Sobrecarga de responsabilidades no front-end funciona
para todos os times e projetos?
★ Nada impede o dev de escrever (é até fácil) uma query
com potencial destrutivo para sua app (ex.: sem
paginação)
★ Ainda precisa evoluir/padronizar os processos de
autorização de acesso
GraphQL não é bala de prata