使用 Laravel 框架提供 GraphQL 服务
我目前在做一个 GraphQL 解析逻辑拆分的库,为了能在日后用于团队的新项目,所以在进行针对 Laravel 框架的封装。但在结合方式的方面缺乏思路,希望大家能给点意见。
我的整体感觉是这样的: Laravel 框架在 HTTP 服务方面提供的大部分功能都是基于 RESTFul 的设计思路发展的。 而 GraphQL 与 RESTFul 的服务方式是迥异的,GraphQL 是在自己的 Schema 中注册路由,并在请求的查询语句中解析路由,这使得 Laravel 的路由、控制器、请求、响应 和 中间件都无法起完整作用。
我目前想到的方案是:
- 让 Laravel 的路由 和 中间件逻辑在解析 GraphQL 之前执行;
- 在控制器方法中包裹 GraphQL 的 Schema 注册和解析逻辑;
- 从请求中提取 GraphQL 所需的数据;
- 用 trait 为模型添加本地作用域方法,用于转换查询语句中的字段并提供给查询构建器;
- 使用API资源类来转换模型的输出结果,但不能直接获取响应数据;
- 使用统一的响应实例来输出 GraphQL 的解析执行结果;
推荐文章: