PHP GraphQL API com Laravel — Parte 1

Marcos Paegle
criciumadev
Published in
3 min readDec 9, 2018
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

--

--