johnlui / graphql-laravel
基于 webonyx/graphql-php 的 Laravel GraphQL 引用实现分支
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 中间件
- 依赖 Laravel 异常处理流程
- 完美接入 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
为配置文件
示例
查询:
query ($id: Int) { foo(id: $id) { id foo bar } }
变量
此处为 JSON 格式描述,开发时应使用 key-value 形式描述 variables,不应该使用 JSON 字符串。
{ "id": 200 }
启动服务器
php artisan serve
URL
http://127.0.0.1:8000/graphql
修改默认路径请编辑config/graphql.php
中的apiUri
。
curl 原始代码描述
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": [] } }
许可证
《johnlui/GraphQL-Laravel》是开源软件,遵循MIT 许可证