johnlui / graphql-laravel
A Laravel GraphQL reference implementation forked from webonyx/graphql-php
v1.5.1
2023-06-11 15:17 UTC
Requires
- php: ^7.1||^8.0
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- amphp/amp: ^2.3
- doctrine/coding-standard: ^6.0
- nyholm/psr7: ^1.2
- phpbench/phpbench: ^0.16.10
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: 0.12.32
- phpstan/phpstan-phpunit: 0.12.11
- phpstan/phpstan-strict-rules: 0.12.2
- phpunit/phpunit: ^7.2|^8.5
- psr/http-message: ^1.0
- react/promise: 2.*
- simpod/php-coveralls-mirror: ^3.0
- squizlabs/php_codesniffer: 3.5.4
Suggests
- psr/http-message: To use standard GraphQL server
- react/promise: To leverage async resolving on React PHP platform
README
webonyx/graphql-php
的 Laravel 适配,魔改原库,将其彻底融入 Laravel 生命周期。
功能
- 接入 Laravel Middleware
- 依赖 Laravel Exception 处理异常流程
- 完美接入 Eloquent
- 提炼出 GraphQL 路由
- 提供 Types 文件夹,并提供强大的 Type 基类
- 提供 QueryFields 文件夹,提供类似于 Controller 归类的功能
- 暴露用户请求字段给 QueryField,便于节约资源、并发 RPC 等后续操作
- 提供 JSON API 语境下的调试函数
cc()
用法
安装 Composer 包
composer require johnlui/graphql-laravel
部署开发目录及配置文件到 app 下
php artisan vendor:publish
快速入门
app\GraphApp
为工作文件夹Routes.php
为路由文件QueryFields
目录存放响应代码Types
目录存放自定义类型config/graphql.php
为配置文件
demo
query:
query ($id: Int) { foo(id: $id) { id foo bar } }
variables:
此处为 JSON 格式描述,开发时应使用 key-value 形式描述 variables,不应该使用 JSON 字符串。
{ "id": 200 }
启动 server
php artisan serve
url
http://127.0.0.1:8000/graphql
修改默认路径请编辑config/graphql.php
中的apiUri
。
curl raw 代码描述
curl --location --request POST 'http://127.0.0.1:8000/graphql' \ --header 'Content-Type: application/json' \ --data-raw '{"query":"query($id: Int) {\n foo(id: $id) {\n id\n foo\n bar\n }\n}","variables":{"id":200}}'
返回值
{ "status": 0, "message": "OK", "values": { "foo": { "id": 200, "foo": "foo", "bar": "bar" }, "queries": [] } }
License
The johnlui/GraphQL-Laravel
is open-sourced software licensed under the MIT license