GraphQL
GraphQL 是一种 API 查询语言和运行时,用于使用现有数据完成这些查询。它为您的 API 中的数据提供了完整且易于理解的描述,让客户能够准确地询问他们需要什么,更容易随着时间的推移发展 API,并启用强大的开发人员工具。
GraphQL 优点
- GraphQL 速度快,并且比较稳定,GraphQL 的操作是在数据层面的,所以比较快。
- GraphQL 可以获取更多的资源,当查询一个数据的时候,不止是这个数据,甚至可以很快地查询到数据引用的另一个数据。GraphQL 可以在单个请求中去获取尽量多的数据,并且在弱网状态下,GraphQL 依旧表现出色。
- GraphQL 是单端点查询,并在此端点中去完成所有的查询。
- GraphQL 的可持续性非常出色,无论是新字段、还是旧字段,它都能很好地去处理,可维护性也极佳。
- GraphQL 具有向下兼容的特性,就算是很久很久以前的功能,GraphQL 还是能很好地去兼容它,保证旧版本的正常运行,同时又不影响新功能的加入以及整体的稳定性。这样做的好处就是,不需要去担忧版本号问题了。
- GraphQL 具有强类型,在 GraphQL 的查询中,一个级别对应一个强类型,这个类型充当一个字段的描述。这样的好处就是,在查询之前,可以校验出错误并提示,方便定位问题,提高性能。
- 自省:可以查询 GraphQL 服务器支持的类型。这为工具和客户端软件创建了一个强大的平台,可以在这些信息的基础上构建静态类型语言的代码生成、我们的应用程序框架、Relay 或 GraphiQL 等 IDE。
- GraphQL 支持使用者去决定服务器支持的类型。这样的好处就是,给很多使用 GraphQL 的 工具或者端建立了一个比较成熟且强大的应用平台,通过这个平台,一些框架、工具得到不断地优化提升。
GraphQL 缺点
- GraphQL 无法完成深度查询,所以无法对于未知深度的数据进行一次性查询。
- GraphQL 具有非常死板的响应结构,你必须遵从这个结构去查询数据,或者自己添加一个转换器来转换。
- GraphQL 无法进行网络级别的缓存,你必须使用另外别的办法进行持久查询。
- GraphQL 默认没有上传文件的功能,GraphQL 也不接收文件类型的参数,但是你可以使用 REST 的方式进行上传文件,达到上传文件的目的。
- GraphQL 的执行是不可预测的,因为 GraphQL 太过于灵活了。
- 同样的一个简单的 API,GraphQL 会表现得很复杂,所以建议简单 API 使用 RSET。
Apifox 调试 GraphQL
写了一个 GraphQL 接口,我们使用 Apifox 这款 API 工具去调试一下:
新建 GraphQL 接口
- 第一步:点击 新增按钮
- 第二步:填入接口名称、URL、方法 POST
- 第三步:点击 保存按钮
运行页传递数据
跳转到 运行页,然后进行操作
- 第一步:Body 类型选择 GraphQL
- 第二步:填入请求数据
{
product(first: 2) {
edges {
node {
id
title
}
}
}
}
- 第三步:点击 发送按钮
然后就可以看到返回结果 Response 啦~~
关于 Apifox
- 集成了API 文档、API 调试、API Mock、API 自动化测试 API 一体化协作平台
- 拥有更先进的 API 设计/开发/测试工具
- Apifox = Postman + Swagger + Mock + JMeter
欢迎体验一下,完全免费的哦:在线使用 Apifox
知识扩展:
了解更多 GraphQL 相关知识。