SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
GraphQL e WordPress,
uma bonita união
Leo Baiano
Ajude as fadinhas
… não use query_posts( );
pre_get_posts();
Preguetinho
para os íntimos.
Leo Baiano
● Programador desde 2001;
● 9 anos trabalhando em
agências
● Passou pela revista istoÉ
● Programador Senior na
Descomplica
O que é GraphQL
GraphQL é uma linguagem de
consulta de dados
desenvolvida e usada pelo
Facebook para realizar
requisições e entregar
informações para aplicações
web e mobile.
Fonte: Tableless
Princípios básicos do GraphQL
No GraphQL temos 3 estruturas principais:
Query;
Mutation;
Subscription.
Princípios básicos do GraphQL
Em uma API GraphQL nós precisamos criar Types para representar
cada estrutura de dados.
Type Post {
ID: ID,
title: String!,
author: Author,
categories: Terms
}
Type Author {
ID: ID,
name: String!
...
}
Type Terms {
ID: ID,
name: String!
...
}
Princípios básicos do GraphQL
Com nossos types definidos nós podemos expor consultas dentro
da nossa API através do objeto query. Para simplificar você pode
entender o exemplo abaixo como se fosse um endpoint de uma API
REST.
Type Query {
posts( id: String): Post
}
Querys
Princípios básicos do GraphQL
{
query {
posts(id:$id) {
title
categorias {
name
}
author {
name
}
}
}
}
// Variáveis
{
id: 1
}
Querys
Princípios básicos do GraphQL
Mutations
As mutations possuem um princípio parecido com o das query,
porém são utilizadas para a inserção de dados. Abaixo um exemplo
de criação de uma mutation.
Type Mutation {
inserirPosts( post: Post): Post
}
Princípios básicos do GraphQL
{
mutation {
inserirPost(post: $post) {
id,
title,
}
}
}
// Variáveis
{
title: "Titulo do post"
}
Mutation
Princípios básicos do GraphQL
Subscriptions
As subscriptions permitem reagir a modificações de informações
no servidor dentro de um cliente de uma API GraphQL em tempo
real.
O GraphQL precisa saber onde buscar e inserir informações, para
isso utilizamos resolver. Uma mesma API GraphQL pode possuir
diversos resolver, isso significa que podemos trabalhar com mysql,
MongoDB e qualquer outra fonte de dados dentro da mesma API.
Princípios básicos do GraphQL
Resolver
Porque precisamos dela se já
temos o REST?
Calmaaaaaa garoto!
GraphQL VS REST - As vantagens do GraphQL
- Com GraphQL é possível solicitar, em uma única requisição, todos
os dados que você precisa e receber apenas os dados que você
especificar;
- Tem muito mais liberdade para criar consultas e filtros complexos
sem precisar modificar a API;
- Apenas uma requisição HTTP.
GraphQL: Exemplo 1 - trazendo só o necessário
Lista de posts com título, link e descrição
REST - Exemplo 1 - trás tudo
Lista de posts com título, link e descrição
GraphQL - Exemplo 2 - Uma única requisição
Lista de posts com título e nome do autor
REST - Exemplo 2 - Cadê o autor?
Lista de posts com título e nome do autor
Eu gostei, mas e o WP???
Caaaaaaaaalma garoto!
Plugin WP-GraphQL
https://github.com/wp-graphql/wp-graphql
WPGraphQL é um plugin WordPress gratuito e de código aberto que
oferece um esquema e API GraphQL extensível para qualquer site
WordPress.
O WPGraphQL fornece uma API GraphQL e / ponto de extremidade
graphql para o seu site WordPress, permitindo a interação com
dados do WordPress usando consultas e mutações do GraphQL.
Plugin WP-GraphQL
https://github.com/wp-graphql/wp-graphql/wiki/Action-and-Filter-Reference
O WP-GraphQL tem uma série de actions e filters, assim como o WP
e plugins mais robustos, com o WooCommerce, você consegue ver
uma lista na URL acima.
Para executar querys ou mutations GraphQL direto no seu tema
WordPress normal é possível utilizar a action do_graphql_request
Plugin WP-GraphQL
do_graphql_request
<?php
$query = '{
posts {
edges {
node {
title
}
}
}
}';
$data = do_graphql_request( $query );
Plugin WP-GraphiQL
https://github.com/wp-graphql/wp-graphiql
Fim!
@wpsampa
@leobaiano

Mais conteúdo relacionado

Semelhante a GraphQL e WordPress: Uma poderosa combinação para 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
 
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
 
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
 
TDC2017 | POA Trilha Arquitetura - Thinking in GraphQL
TDC2017 | POA Trilha Arquitetura - Thinking in GraphQLTDC2017 | POA Trilha Arquitetura - Thinking in GraphQL
TDC2017 | POA Trilha Arquitetura - Thinking in GraphQLtdc-globalcode
 
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
 
GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017Marcos Brizeno
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
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
 
Introducao ao GraphQL
Introducao ao GraphQLIntroducao ao GraphQL
Introducao ao GraphQLMVP Microsoft
 
PHPTalks 2019: GraphQL + Laravel
PHPTalks 2019: GraphQL + LaravelPHPTalks 2019: GraphQL + Laravel
PHPTalks 2019: GraphQL + LaravelJansen Felipe
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228MoisesInacio
 
Clojure: do zero ao deploy de uma API REST
Clojure: do zero ao deploy de uma API RESTClojure: do zero ao deploy de uma API REST
Clojure: do zero ao deploy de uma API RESTAna Luisa Bavati
 
GraphQL - A Graph Query Language to your API
GraphQL - A Graph Query Language to your APIGraphQL - A Graph Query Language to your API
GraphQL - A Graph Query Language to your APIDan Vitoriano
 
Extração de informação no StackOverflow Careers
Extração de informação no StackOverflow CareersExtração de informação no StackOverflow Careers
Extração de informação no StackOverflow Careersroberta arcoverde
 
GraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAGraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAMaira Bello
 
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full TextFull Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full TextRodrigo Urubatan
 
GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?Wender Machado
 

Semelhante a GraphQL e WordPress: Uma poderosa combinação para 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
 
GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-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
 
TDC2017 | POA Trilha Arquitetura - Thinking in GraphQL
TDC2017 | POA Trilha Arquitetura - Thinking in GraphQLTDC2017 | POA Trilha Arquitetura - Thinking in GraphQL
TDC2017 | POA Trilha Arquitetura - Thinking in GraphQL
 
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
 
GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017GraphQL ou APIs RESTful - DevDay 2017
GraphQL ou APIs RESTful - DevDay 2017
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
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
 
Introducao ao GraphQL
Introducao ao GraphQLIntroducao ao GraphQL
Introducao ao GraphQL
 
PHPTalks 2019: GraphQL + Laravel
PHPTalks 2019: GraphQL + LaravelPHPTalks 2019: GraphQL + Laravel
PHPTalks 2019: GraphQL + Laravel
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
 
Clojure: do zero ao deploy de uma API REST
Clojure: do zero ao deploy de uma API RESTClojure: do zero ao deploy de uma API REST
Clojure: do zero ao deploy de uma API REST
 
GraphQL - A Graph Query Language to your API
GraphQL - A Graph Query Language to your APIGraphQL - A Graph Query Language to your API
GraphQL - A Graph Query Language to your API
 
Extração de informação no StackOverflow Careers
Extração de informação no StackOverflow CareersExtração de informação no StackOverflow Careers
Extração de informação no StackOverflow Careers
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
GraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAGraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORA
 
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full TextFull Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
 
GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?GraphQL - aposta ou retrocesso?
GraphQL - aposta ou retrocesso?
 

Mais de Leo Baiano

Marketing e programação unir para conquistar
Marketing e programação  unir para conquistarMarketing e programação  unir para conquistar
Marketing e programação unir para conquistarLeo Baiano
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Leo Baiano
 
Home viva do design da interface até a programação do sistema
Home viva  do design da interface até a programação do sistemaHome viva  do design da interface até a programação do sistema
Home viva do design da interface até a programação do sistemaLeo Baiano
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressLeo Baiano
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalLeo Baiano
 
Dicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPressDicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPressLeo Baiano
 
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITMontando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITLeo Baiano
 

Mais de Leo Baiano (7)

Marketing e programação unir para conquistar
Marketing e programação  unir para conquistarMarketing e programação  unir para conquistar
Marketing e programação unir para conquistar
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Home viva do design da interface até a programação do sistema
Home viva  do design da interface até a programação do sistemaHome viva  do design da interface até a programação do sistema
Home viva do design da interface até a programação do sistema
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPress
 
Clean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissionalClean code: programando com WordPress de forma profissional
Clean code: programando com WordPress de forma profissional
 
Dicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPressDicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPress
 
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITMontando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
 

GraphQL e WordPress: Uma poderosa combinação para APIs

  • 1. GraphQL e WordPress, uma bonita união Leo Baiano
  • 2. Ajude as fadinhas … não use query_posts( );
  • 4. Leo Baiano ● Programador desde 2001; ● 9 anos trabalhando em agências ● Passou pela revista istoÉ ● Programador Senior na Descomplica
  • 5. O que é GraphQL GraphQL é uma linguagem de consulta de dados desenvolvida e usada pelo Facebook para realizar requisições e entregar informações para aplicações web e mobile. Fonte: Tableless
  • 6. Princípios básicos do GraphQL No GraphQL temos 3 estruturas principais: Query; Mutation; Subscription.
  • 7. Princípios básicos do GraphQL Em uma API GraphQL nós precisamos criar Types para representar cada estrutura de dados. Type Post { ID: ID, title: String!, author: Author, categories: Terms } Type Author { ID: ID, name: String! ... } Type Terms { ID: ID, name: String! ... }
  • 8. Princípios básicos do GraphQL Com nossos types definidos nós podemos expor consultas dentro da nossa API através do objeto query. Para simplificar você pode entender o exemplo abaixo como se fosse um endpoint de uma API REST. Type Query { posts( id: String): Post } Querys
  • 9. Princípios básicos do GraphQL { query { posts(id:$id) { title categorias { name } author { name } } } } // Variáveis { id: 1 } Querys
  • 10. Princípios básicos do GraphQL Mutations As mutations possuem um princípio parecido com o das query, porém são utilizadas para a inserção de dados. Abaixo um exemplo de criação de uma mutation. Type Mutation { inserirPosts( post: Post): Post }
  • 11. Princípios básicos do GraphQL { mutation { inserirPost(post: $post) { id, title, } } } // Variáveis { title: "Titulo do post" } Mutation
  • 12. Princípios básicos do GraphQL Subscriptions As subscriptions permitem reagir a modificações de informações no servidor dentro de um cliente de uma API GraphQL em tempo real.
  • 13. O GraphQL precisa saber onde buscar e inserir informações, para isso utilizamos resolver. Uma mesma API GraphQL pode possuir diversos resolver, isso significa que podemos trabalhar com mysql, MongoDB e qualquer outra fonte de dados dentro da mesma API. Princípios básicos do GraphQL Resolver
  • 14. Porque precisamos dela se já temos o REST? Calmaaaaaa garoto!
  • 15. GraphQL VS REST - As vantagens do GraphQL - Com GraphQL é possível solicitar, em uma única requisição, todos os dados que você precisa e receber apenas os dados que você especificar; - Tem muito mais liberdade para criar consultas e filtros complexos sem precisar modificar a API; - Apenas uma requisição HTTP.
  • 16. GraphQL: Exemplo 1 - trazendo só o necessário Lista de posts com título, link e descrição
  • 17. REST - Exemplo 1 - trás tudo Lista de posts com título, link e descrição
  • 18. GraphQL - Exemplo 2 - Uma única requisição Lista de posts com título e nome do autor
  • 19. REST - Exemplo 2 - Cadê o autor? Lista de posts com título e nome do autor
  • 20. Eu gostei, mas e o WP??? Caaaaaaaaalma garoto!
  • 21. Plugin WP-GraphQL https://github.com/wp-graphql/wp-graphql WPGraphQL é um plugin WordPress gratuito e de código aberto que oferece um esquema e API GraphQL extensível para qualquer site WordPress. O WPGraphQL fornece uma API GraphQL e / ponto de extremidade graphql para o seu site WordPress, permitindo a interação com dados do WordPress usando consultas e mutações do GraphQL.
  • 22. Plugin WP-GraphQL https://github.com/wp-graphql/wp-graphql/wiki/Action-and-Filter-Reference O WP-GraphQL tem uma série de actions e filters, assim como o WP e plugins mais robustos, com o WooCommerce, você consegue ver uma lista na URL acima. Para executar querys ou mutations GraphQL direto no seu tema WordPress normal é possível utilizar a action do_graphql_request
  • 23. Plugin WP-GraphQL do_graphql_request <?php $query = '{ posts { edges { node { title } } } }'; $data = do_graphql_request( $query );