GraphQL API + Laravel 5.7
PHPMG Talks 2019
5.8
Jansen Felipe
@jansenfelipe
O que é GraphQL API?
Application Programming Interface
API
O que é GraphQL API?
Utiliza o protocolo de
comunicação HTTP
(assim como o REST)
GET /talk/32
{
"title": "1º PHPMG Talks 2019",
"date": "2019-03-21",
"description": "Estamos de volta..",
"place_id": 931
}
GET /place/931
{
"name": "Sympla",
"address": "R. Fernandes Tourinho 147",
"city": "Belo Horizonte/MG"
}
GET /talk/32/participants
[
{
id: 32723,
document: "00011122233",
name: "Lucas Marques"
},
{
id: 88574,
document: "12345678900",
name: "Augusto Morais"
}
]
É um padrão de API
Criado pelos engenheiros do Facebook
em 2012 e utilizado em seu aplicativo
mobile.
Três anos mais tarde foi entregue a
comunidade open source.
Em 2016 recebeu seu primeiro release.
Uma alternativa ao REST
O que é GraphQL?
{
"title": "1º PHPMG Talks 2019",
"date": "2019-03-21",
"description": "Estamos de volta..",
"place": {
"name": "Sympla"
},
"participants": [
{"name": "Jansen Felipe"},
{"name": "Junior Grossi"}
]
}
GET /graphql?query={
talk(id:1){
title
date
description
place {
name
}
participants {
name
}
}
}
REQUEST RESPONSE
GraphQL + PHP
https://github.com/webonyx/graphql-php
Schema
Responsável por descrever exatamente
quais dados podem ser solicitados.
É a documentação da sua GraphQL API.
Na "raiz" do schema é indicado dois tipos
especiais: Query e Mutation
GraphQL + PHP
Query
Descreve as operações de busca de
dados, os argumentos aceitos e os tipos
possíveis de serem retornados.
Adicionamos uma função anônima na
chave "resolve" que receberá o as regras
de negócio do seu software.
GraphQL + PHP
Mutation
Descreve as operações de alteração de
dados, os argumentos aceitos e os tipos
possíveis de serem retornados.
Adicionamos uma função anônima na
chave "resolve" que receberá o as regras
de negócio do seu software.
GraphQL + PHP
GraphQL + Laravel
https://github.com/supliu/laravel-graphql
Criando um novo projeto Laravel
Executando o projeto localhost
Adicionar o pacote
composer require supliu/laravel-graphql
Setup do pacote
Verificando se deu certo
GraphiQL
An in-browser IDE for exploring
GraphQL.
Star Wars GraphQL API - Example
https://graphql.github.io/swapi-graphql
GraphiQL customizado
Live code

PHPTalks 2019: GraphQL + Laravel