SlideShare uma empresa Scribd logo
1 de 45
Introdução ao GraphQL
Uma nova forma de criar APIs
Fernando Henriques
● Desenvolvedor 10+ anos
● Senior Full Stack Developer
● JavaScript, Ruby, PHP e Java
● Front-end 💓 3000
github.com/fernandohenriques
Nova forma de criar APIs?
Foi criada em 2012 e lançada publicamente em 2015, mas...
FACEBOOK STACK
https://stackshare.io/facebook/facebook
Ecossistema rico
Mais de mil pacotes no NPM para o termo “graphql”...
Alguém está usando em prod ?
Minha empresa também usa
O que é o GraphQL?
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 ?
Motivação
Quem solicita decide o que quer receber
(somente o que precisa)
Essa é a premissa básica, motivo de sua criação
No REST não é assim
Em uma API REST é preciso criar um novo
endpoint para receber uma resposta com estrutura
de dados diferente
Netflix
GraphQL REST
● 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
Action-based URL x Resource-based URL
Como ficam as URLs no GraphQL?
Buscando dados com REST
GET /babies
Buscando dados com GraphQL
POST /graphql
Buscando dados por ID com REST
GET /babies/1
Buscando dados por ID com GraphQL
POST /graphql
Salvando dados com REST
POST /babies
Salvando dados com GraphQL
POST /graphql
Filtrando dados com REST
POST /babies?name=joaquim
Filtrando dados com GraphQL
POST /graphql
★ Baixo custo de mudança
★ Mais poder para o front-end
Duas grandes vantagens do GraphQL
Vamos entender como a mágica
acontece
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
● 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
Problema de versionamento
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
Interface
Union Types
O GraphQL trabalha com o conceito
de estado
Queries e Mutations
Exemplo de query e mutation
Resolvers
Responsável pela magia mais poderosa
Suporte a real time
Subscription
★ 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
Outros protocolos para APIs
GraphQL como API
Gateway
Use Apollo GraphQL;
Obrigado!

Mais conteúdo relacionado

Mais procurados

Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Adler Medrado
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Panorama atual do PHP
Panorama atual do PHPPanorama atual do PHP
Panorama atual do PHPAdler Medrado
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
 
Angular - Ruby Morning
Angular - Ruby MorningAngular - Ruby Morning
Angular - Ruby MorningYan Justino
 
PHP e Javascript para quem não conhece
PHP e Javascript para quem não conhecePHP e Javascript para quem não conhece
PHP e Javascript para quem não conheceguest6f8d1c
 

Mais procurados (10)

Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Panorama atual do PHP
Panorama atual do PHPPanorama atual do PHP
Panorama atual do PHP
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
Angular - Ruby Morning
Angular - Ruby MorningAngular - Ruby Morning
Angular - Ruby Morning
 
PHP e Javascript para quem não conhece
PHP e Javascript para quem não conhecePHP e Javascript para quem não conhece
PHP e Javascript para quem não conhece
 

Semelhante a Introdução ao GraphQL: Uma nova forma de criar APIs

REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)Bruno Soares
 
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
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 Gabriel Machado
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningFelipe Santos
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactCleber Gasparoto
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...tdc-globalcode
 
Rails API com GraphQL
Rails API com GraphQLRails API com GraphQL
Rails API com GraphQLSergio Lima
 
GraphQL com .NET Core
GraphQL com .NET CoreGraphQL com .NET Core
GraphQL com .NET CoreMVP Microsoft
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
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
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLTaller Negócio Digitais
 

Semelhante a Introdução ao GraphQL: Uma nova forma de criar APIs (20)

REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Intro à Graphql
Intro à GraphqlIntro à Graphql
Intro à Graphql
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
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
 
Introdução ao GraphQL
Introdução ao GraphQLIntrodução ao GraphQL
Introdução ao GraphQL
 
GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)
 
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 - 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
 
Django
DjangoDjango
Django
 
Apres s3
Apres s3 Apres s3
Apres s3
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine Learning
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e React
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
 
Rails API com GraphQL
Rails API com GraphQLRails API com GraphQL
Rails API com GraphQL
 
GraphQL com .NET Core
GraphQL com .NET CoreGraphQL com .NET Core
GraphQL com .NET Core
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
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
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
 

Mais de Fernando Henriques

9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometemFernando Henriques
 
A importância de padronizar nosso CSS
A importância de padronizar nosso CSSA importância de padronizar nosso CSS
A importância de padronizar nosso CSSFernando Henriques
 
Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Fernando Henriques
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactFernando Henriques
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactFernando Henriques
 
Rails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luzRails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luzFernando Henriques
 

Mais de Fernando Henriques (6)

9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem
 
A importância de padronizar nosso CSS
A importância de padronizar nosso CSSA importância de padronizar nosso CSS
A importância de padronizar nosso CSS
 
Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: React
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: React
 
Rails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luzRails admin : Como criar um painel administrativo na velocidade da luz
Rails admin : Como criar um painel administrativo na velocidade da luz
 

Introdução ao GraphQL: Uma nova forma de criar APIs