PHP GraphQL API com Laravel — Parte 1

Marcos Paegle
Dec 9, 2018 · 3 min read
Logo Package + Laravel

Sem frescura vamos direto ao ponto. No decorrer da explicação vou colocando alguns links importantes para o entendimento.

Esses dias me interessei em saber o que é o tal do GraphQL, fui atrás dei uma olhada na documentação, fiz o demo do howtographql e massa. Mais como aplicar isso na minha linguagem preferida (PHP) e framework do coração (Laravel)?

Dei uma googlada e achei um ótimo pacote (lighthouse) que cria para você o servidor GraphQL no Laravel. Resolvi aqui compartilhar meu aprendizado (no minimo terei um how-to para quando eu precisar e na melhor das hipóteses vou ajudar alguém).

OBS: não vou explicar aqui como instalar o PHP e Composer, mais você pode dar uma olhada aqui(windows) e depois aqui(windows).

Então tá, vai lá jovem gafanhoto e crie nosso projeto em laravel (gosto de usar o composer create-project para isso).

composer create-project --prefer-dist laravel/laravel graphql-api

Agora adicione o lighthouse no nosso projeto. E em seguida publique os arquivos do pacote.

composer require nuwave/lighthouse && php artisan vendor:publish --provider="Nuwave\Lighthouse\Providers\LighthouseServiceProvider" --tag=schema

Adicione o aliases no array ‘aliases’ no arquivo config/app.php

'GraphQL' => Nuwave\Lighthouse\Support\Facades\GraphQLFacade::class,

E pronto, nosso servidor GraphQL está pronto! Mais antes de por ele no ar, vamos configurar nossa aplicação.

Vamo usar o SQLite como base de dados, então no arquivo de configuração (.env) vamos remover as variáveis de ambiente, referentes ao banco de dados e deixar somente a variável DB_CONNECTION com o valor sqlite.

DB_CONNECTION=sqlite

E criar o arquivo de banco no diretório database do nosso projeto.

touch database/database.sqlite

Rode os migrates e coloca o servidor para rodar com o Laravel(to usando o servidor embutido do PHP mesmo).

php artisan migrate && php artisan serve

Ai sim, servidor GraphQL no ar (pelo menos aqui funcionou).

Agora você deve estar se perguntando, como que vamos testar esse nosso novo serviço? A resposta e e simples jovem gafanhoto, da uma olhada nesse pacote aqui.

Vai lá e adiciona o pacote do laravel-graphql-playground (não esquece de parar o servidor antes, não que isso irá fazer alguma diferença). Em seguida publique os arquivos do pacote.

composer require mll-lab/laravel-graphql-playground && php artisan vendor:publish --provider="MLL\GraphQLPlayground\GraphQLPlaygroundServiceProvider"

Se você olhar agora as suas rotas

php artisan route:list

uma dela sera /graphql-playground. É essa rota que vamos acessar agora (se você parou o servidor, agora e hora de subir ele novamente). Se você estiver seguindo a explicação é só voce acessar a pagina http://127.0.0.1:8000/graphql-playground. Mais antes de acessar o graphql-playground, vamos adicionar um pouco de dados no nosso banco.

Nesse primeiro momento, vamos usar o model User que vem com toda nova aplicação Laravel. Acesse o tinker.

php artisan tinker

Agora no crie alguns usuários.

factory(App\User::class, 100)->create()

Agora sim, acesse o graphql-playground e execute a query abaixo:

query {
users(count: 10 page: 1) {
data {
id
name
email
}
}
}

Clique no botão play e veja o resultado!

O que dizer? I ❤️Laravel! E os malucos do Lighthouse estão de parabéns. No próximo post vamos entender como o Lighthouse funciona.

OBS: Os fonts desse projeto podem ser encontrados em https://github.com/marcospaegle/graphql-api

criciumadev

Comunidade de desenvolvedores do Sul de Santa Catarina

Marcos Paegle

Written by

criciumadev

Comunidade de desenvolvedores do Sul de Santa Catarina

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade