SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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/

Mais conteúdo relacionado

Semelhante a Introdução ao GraphQL: O que é, como funciona e exemplos

GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017Marcos Brizeno
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIsDaniel Varanda
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiiMasters
 
GraphQL - A Linguagem do Facebook para APIs
GraphQL - A Linguagem do Facebook para APIsGraphQL - A Linguagem do Facebook para APIs
GraphQL - A Linguagem do Facebook para APIsSergio Lima
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Danival Calegari
 

Semelhante a Introdução ao GraphQL: O que é, como funciona e exemplos (20)

Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017
 
GraphQL - Uma nova maneira de projetar api's
GraphQL - Uma nova maneira de projetar api'sGraphQL - Uma nova maneira de projetar api's
GraphQL - Uma nova maneira de projetar api's
 
GraphQL - uma nova maneira de projetar api's
GraphQL - uma nova maneira de projetar api'sGraphQL - uma nova maneira de projetar api's
GraphQL - uma nova maneira de projetar api's
 
es6
es6es6
es6
 
Es6
Es6Es6
Es6
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIs
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
 
Java web
Java webJava web
Java web
 
GraphQL - A Linguagem do Facebook para APIs
GraphQL - A Linguagem do Facebook para APIsGraphQL - A Linguagem do Facebook para APIs
GraphQL - A Linguagem do Facebook para APIs
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
 
Apres s3
Apres s3 Apres s3
Apres s3
 

Introdução ao GraphQL: O que é, como funciona e exemplos