LaravelでGraphQLサーバーを作成できるLighthouseの解説(導入)


GraphQLサーバーを作成することになり、Lighthoseを利用したので備忘録と簡単な解説。
今回は導入編

Lighthouse

公式:https://lighthouse-php.com/
LaravelでGraphQLを利用するためのライブラリ。

導入

  • インストール
composer require nuwave/lighthouse
  • デフォルトスキーマの公開
php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider" --tag=schema

作成されるスキーマファイル

graphql/schema.graphql
"A date string with format `Y-m-d`, e.g. `2011-05-23`."
scalar Date @scalar(class: "Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\Date")

"A datetime string with format `Y-m-d H:i:s`, e.g. `2018-05-23 13:43:32`."
scalar DateTime @scalar(class: "Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\DateTime")

"A datetime and timezone string in ISO 8601 format `Y-m-dTH:i:sO`, e.g. `2020-04-20T13:53:12+02:00`."
scalar DateTimeTz @scalar(class: "Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\DateTimeTz")

type Query {
    users: [User!]! @paginate(defaultCount: 10)
    user(id: ID @eq): User @find
}

type User {
    id: ID!
    name: String!
    email: String!
    created_at: DateTime!
    updated_at: DateTime!
}
  • configファイルの作成
php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider" --tag=config

上記コマンドで config/lighthouse.php にファイルが作成されます。
エンドポイントの変更とか諸々の設定が可能です。

  • DevTool GraphQL-PlayGround

GraphQLスキーマの確認、クエリを実行できる便利なTool
ちなみにPostman等クライアントツールもGraphQLに対応しています。

composer require --dev mll-lab/laravel-graphql-playground

dockerやlaravelのビルドインサーバーを立ち上げてアプリURL/graphql-playgroundにアクセスすることで利用できます。

公式見れば書いてあるすごく薄い内容ですが導入は終わり
次回はlighthouseのディレクティブをまとめたいって思ってます。