Help us understand the problem. What is going on with this article?

Laravel 5.7 + GraphQL(Install編)

:x:追記: ご注意:x:

folkloreinc/laravel-graphql こちらの記事で採用しているライブラリが 2019/2/10 にアーカイブされてしまいました😢😢😢
今後ライブラリ導入を検討される方は nuwave/lighthouse を推奨します。

=========================================================

今回はLaravel5.7にGraphQLをインストールします。

シリーズ記事

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のインストール

https://github.com/ucan-lab/practice-laravel-graphql/commit/9cf44f673a0330414b33d76f163b883d1a93b4d0

$ composer require folklore/graphql:dev-develop

https://github.com/Folkloreatelier/laravel-graphql/issues/376

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

http://127.0.0.1:8000/graphiql

スクリーンショット 2018-10-13 18.32.18.png

クエリ実行

スクリーンショット 2018-10-13 22.46.12.png

こんな感じでクエリの実行とjsonデータの取得が行えます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away