Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@ucan-lab

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

$ 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

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

クエリ実行

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

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

Why not register and get more from Qiita?
  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
21
Help us understand the problem. What are the problem?