使用 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...

sanders
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3

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

5天前 评论
sanders (楼主) 4天前
sanders

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

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

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!