johnlui/graphql-laravel

基于 webonyx/graphql-php 的 Laravel GraphQL 引用实现,从原库中分支出来,完全融入 Laravel 生命周期。

v1.5.1 2023-06-11 15:17 UTC

This package is auto-updated.

Last update: 2024-09-11 18:02:27 UTC


README

GitHub version php-version License


webonyx/graphql-php 提供的 Laravel 适配器,修改原库,将其完全融入 Laravel 生命周期。

功能

  1. 接入 Laravel 中间件
  2. 依赖 Laravel 异常处理流程
  3. 完美接入 Eloquent
  4. 提取 GraphQL 路由
  5. 提供 Types 文件夹,并提供强大的 Type 基类
  6. 提供 QueryFields 文件夹,提供类似于 Controller 归类的功能
  7. 将用户请求字段暴露给 QueryField,便于节约资源、并发 RPC 等后续操作
  8. 提供 JSON API 语境下的调试函数 cc()

用法

安装 Composer 包

composer require johnlui/graphql-laravel

将开发目录及配置文件部署到 app 下

php artisan vendor:publish

快速入门

  1. app\GraphApp 为工作目录
  2. Routes.php 为路由文件
  3. QueryFields 目录存放响应代码
  4. Types 目录存放自定义类型
  5. 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 许可协议