项目描述
翻译这项工作涵盖整个GraphQL后端堆栈:为我们的关键实体设计的类型优先模式,基于优化的PostgreSQL层的解析器,通过上下文传递的JWT身份验证,以及字段级授权,以便不同角色仅能看到他们应该看到的内容。实时部分也很重要——订单状态和通知必须通过WebSocket订阅到达客户端,而不是不断轮询。除了正确性,我们还关心安全性和查询成本控制:深度和复杂性限制,以及针对移动客户端的持久化查询。
由于这取代了一个实时API,干净的迁移路径和清晰的文档是任务的一部分,而不是额外的奖励。告诉我们您发布的GraphQL API,以及您如何解决授权和性能问题。详细范围如下。
1. 模式设计
— 类型优先:用户、产品、订单、评论、通知
— 输入类型,变更
— 自定义标量(日期、JSON、上传)
— 状态字段的枚举类型
2. 实施
— Apollo Server 4 + Express
— DataLoader以防止N+1查询
— 通过上下文的JWT身份验证
— 字段级授权
— 通过WebSocket的订阅(订单状态,通知)
3. 性能和质量
— 查询深度/复杂性限制
— 针对移动客户端的持久化查询
— PostgreSQL优化(EXPLAIN ANALYZE)
— 解析器的单元测试(Jest + Supertest)
— Apollo Studio集成
4. 文档
— 文档化的模式(所有类型的描述)
— Postman/Insomnia集合
— 从REST的迁移指南