Graphql 最佳实践

本文探讨了GraphQL的实用技巧,包括将业务建模为图、HTTP服务的使用、授权处理、分页策略以及缓存管理。建议将授权逻辑置于业务层,避免在GraphQL层重复。推荐使用基于游标的分页方法,并介绍了Apollo缓存的工作原理和不同fetch策略。
摘要由CSDN通过智能技术生成

关于图的思考

        图是将很多真实世界现象变成模型的强大工具,因为它们和我们自然的心智模型和基本过程的口头描述很相似。通过 GraphQL,你会把自己的业务领域通过定义 schema 建模成一张图;在你的 schema 里,你定义不同类型的节点以及它们之间是如何连接的。在客户端这边,这创建了一种类似于面向对象编程的模式:引用其他类型的类型。在服务器端,由于 GraphQL 定义了接口,你可以在任何后端自由的使用它。  

       考虑下把你的 GraphQL schema 作为一种给你的团队和用户的沟通的共同语言。为了建立一个好的 schema,你必须检查你用来描述业务的日常语言。

       你应该在哪里定义真正的业务逻辑?你应该在哪里验证,检查用户权限?就是在专门的业务逻辑层里。你的业务逻辑层应作为执行业务域规则的唯一正确来源。  

通过HTTP提供服务

        理论上graphql并没有限制你使用的通信协议,但是这里我们推荐使用http协议来提供你的graphql服务。

URI和路由

       HTTP 通常与 REST 相关联,REST 使用“资源”作为其核心概念。相比之下,GraphQL 的概念模型是一个实体图。因此,GraphQL 中的实体无法通过 URL 识别。相反,GraphQL 服务器在单个 URL /入口端点(通常是 /graphql)上运行,并且所有提供服务的 GraphQL 请求都应被导向此入口端点。

HTTP方法

       你的http方法应该能够支持GET和POST两种方法:

GET:应当在 “query” 查询字符串(query string)中指定 GraphQL 查询。

{
  me {
    name
  }
}

此请求可以通过get发送 

http://myapi/graphql?query={me{name}}

POST:标准的 GraphQL POST 请求应当使用 applica

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值