追記: ご注意
folkloreinc/laravel-graphql こちらの記事で採用しているライブラリが 2019/2/10 にアーカイブされてしまいました😢😢😢
今後ライブラリ導入を検討される方は nuwave/lighthouse を推奨します。
=========================================================
今回はLaravel5.7にGraphQLをインストールします。
シリーズ記事
- LaravelとGraphQLでAPI開発
- Laravel 5.7 + GraphQL(Install編)
- Laravel 5.7 + GraphQL(ScalarType編)
- Laravel 5.7 + GraphQL(Relation編)
- Laravel 5.7 + GraphQL(Dump Server編)
- Laravel 5.7 + GraphQL(Pagination編)
- Laravel 5.7 + GraphQL(ErrorHandling編)
- Laravel 5.7 + GraphQL(Test編)
Laravel5.7インストール
Laravelインストーラを用いてLaravelをインストールしました。
※インストーラ版はバージョン指定はできませんが最新版がインストールできます。
$ laravel new practice-laravel-graphql
$ cd practice-laravel-graphql
$ php artisan --version
Laravel Framework 5.7.9
執筆時の最新の5.7.9を使用しています。
.env
に用意したデータベースの情報を適宜設定します。
git commit
$ git init
$ git add .
$ git commit -m "laravel install"
GraphQLのインストール
$ composer require folklore/graphql:dev-develop
2018/10/22時点では、Laravel5.7未対応ですがdevelopブランチの方で修正コミットされてます。
masterにマージされるまではdevelopブランチを使用したいと思います。
$ php artisan vendor:publish --provider="Folklore\GraphQL\ServiceProvider"
Copied File [/vendor/folklore/graphql/src/config/config.php] To [/config/graphql.php]
Copied Directory [/vendor/folklore/graphql/src/resources/views] To [/resources/views/vendor/graphql]
Publishing complete.
/config/graphql.php
/resources/views/vendor/graphql/graphiql.php
上記の2つのファイルが配置される。
追加されるGraphQLコマンド
$ php artisan list | grep graphql
make:graphql:enum Create a new GraphQL enum class
make:graphql:field Create a new GraphQL field class
make:graphql:interface Create a new GraphQL interface class
make:graphql:mutation Create a new GraphQL mutation class
make:graphql:query Create a new GraphQL query class
make:graphql:scalar Create a new GraphQL scalar class
make:graphql:type Create a new GraphQL type class
ひな型ファイルを作ってくれるコマンドが7種用意されてます。
追加されるGraphQLルーティング
$ php artisan route:list
+--------+----------+----------------------------+--------------------+---------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+----------------------------+--------------------+---------------------------------------------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | graphiql/{graphql_schema?} | graphql.graphiql | Folklore\GraphQL\GraphQLController@graphiql | |
| | GET|HEAD | graphql/{graphql_schema?} | graphql.query | Folklore\GraphQL\GraphQLController@query | |
| | POST | graphql/{graphql_schema?} | graphql.query.post | Folklore\GraphQL\GraphQLController@query | |
+--------+----------+----------------------------+--------------------+---------------------------------------------+--------------+
GraphQLのルーティングが3つ追加されています。
graphiql
のルートはGraphQLをブラウザで実行できます。
graphiql
$ php artisan serve
クエリ実行
こんな感じでクエリの実行とjsonデータの取得が行えます。