使用 Laravel 框架提供 GraphQL 服务

我目前在做一个 GraphQL 解析逻辑拆分的库,为了能在日后用于团队的新项目,所以在进行针对 Laravel 框架的封装。但在结合方式的方面缺乏思路,希望大家能给点意见。

我的整体感觉是这样的: Laravel 框架在 HTTP 服务方面提供的大部分功能都是基于 RESTFul 的设计思路发展的。 而 GraphQL 与 RESTFul 的服务方式是迥异的,GraphQL 是在自己的 Schema 中注册路由,并在请求的查询语句中解析路由,这使得 Laravel 的路由、控制器、请求、响应 和 中间件都无法起完整作用。

我目前想到的方案是:

  1. 让 Laravel 的路由 和 中间件逻辑在解析 GraphQL 之前执行;
  2. 在控制器方法中包裹 GraphQL 的 Schema 注册和解析逻辑;
  3. 从请求中提取 GraphQL 所需的数据;
  4. 用 trait 为模型添加本地作用域方法,用于转换查询语句中的字段并提供给查询构建器;
  5. 使用API资源类来转换模型的输出结果,但不能直接获取响应数据;
  6. 使用统一的响应实例来输出 GraphQL 的解析执行结果;

项目路径:https://github.com/sandersyao/graphql-reso...

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

使用了 GraphQL 速度会不会慢很多

4年前 评论
sanders (楼主) 4年前
sanders

@winter-ice 之前尝试用过这个项目,这个包的主要问题是直接将 Schema 映射到模型属性或模型关系上,中间很难插入其他处理逻辑,或特殊定制化的属性。

4年前 评论
sanders (作者) (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!