Introdução ao GraphQL
Por @guigaoliveira
O que é GraphQL?
“GraphQL is a query language for your API, and
a server-side runtime for executing queries by
using a type system you define for your data.”
https://graphql.org/learn
Quem utiliza?
Qual a motivação?
Alguns cuidados/problemas com REST
Como o GraphQL ajuda
Visão geral
Visão geral
Os princípios básicos do GraphQL
Query para obter dados
Mutation para manipulação de dados
Subscription para obter dados em tempo real
Alguns conceitos
Queries: os clientes as enviam para especificar os dados de que precisam.
Schema: O contrato para comunicação cliente-servidor. Especifica quais consultas
os clientes podem fazer, o que pode ser buscado e os relacionamentos entre os
tipos.
Resolvers: Uma função ou método que resolve um valor para um tipo ou campo
no schema.
Query - Exemplo
POST /graphql Retorno
Query - Várias ao mesmo tempo e apelidos
POST /graphql Retorno
Query - Nested
POST /graphql Retorno
Mutation - Exemplo
POST /graphql Retorno
Mutation - Removendo dados
POST /graphql Retorno
Mutation - Caso de erro
POST /graphql Retorno
Schema
Scalar Types
Existem 5 tipos escalares integrados ao GraphQL: Int, Float, String, Boolean e ID.
Escalares podem ser personalizados:
Enums
Um Enum é semelhante a um tipo escalar, mas pode ser apenas um dos vários
valores definidos no esquema.
As diretivas e algumas aplicações
As diretivas e algumas aplicações
As diretivas e algumas aplicações
Resolvers
Os resolvers recebem os seguintes argumentos:
● root - Resultado do tipo anterior / pai
● args - argumentos fornecidos para o campo
● context - um objeto mutável que é fornecido a todos os resolvers
● info - contém (Abstract syntax tree) AST da consulta e mais
informações de execução
Resolvers
Default resolvers
Bibliotecas / Ferramentas
● Apollo Client/Server/Engine (React / Node.js)
● Relay (React)
● Prisma (Javascript/Typescript/Flow/Go/)
● GraphiQL
● GraphQL Editor
● GraphQL Voyager
● GraphQL Playground
● GraphQL Docs
OK...MAS E A DEMO?
Servidor:
https://codesandbox.io/embed/graphql-intro-server-pcc8w
Cliente:
https://codesandbox.io/embed/graph-intro-client-f4ekh
Referências
● https://graphql.org/
● https://www.apollographql.com/docs/
● https://alligator.io/graphql/graphql-sdl/
● https://pt.slideshare.net/AmazonWebServices/introduction-to-graphql-95577414
● https://yos.io/2016/11/02/graphql-in-an-age-of-rest/
● https://github.com/prisma/prisma/blob/master/docs/1.15/understand-prisma/introduction-to-graph
ql-server-development-aa02.mdx
● https://blog.codecasts.com.br/entendendo-o-que-%C3%A9-graphql-atrav%C3%A9s-de-exemplos
-c2fa35e8bf63
● https://pt.slideshare.net/brunolemos/graphql-apis-mais-robustas-e-flexveis
● https://www.howtographql.com/

Introdução ao GraphQL