自2015年开源以来,GraphQL因其灵活性和高效率而迅速普及。它可以通过允许客户端在一个请求中准确指定他们所需的数据来处理复杂的嵌套查询,从而消除了RESTful API固有的数据冗余和请求冗余的经典问题。
此外,由于它只是一种查询语言,与协议无关,因此可以通过HTTP2、websockets或TCP使用。
有什么潜在的风险?
但是,GraphQL并不是万金油,做出转变时还有一些问题需要考虑。
· 出错信息:即使查询失败,客户端也始终会收到200状态,因为非200响应代码表示问题发生在HTTP传输层而不是GraphQL层。
· 模式设计:如果开发人员在进行模式设计时粗心了(尤其是在定义resolver函数时),那么性能和效率可能会急剧下降——使用GraphQL API可能比RESTful API更糟糕。
· 性能测试:使用GraphQL API很难进行有意义的性能测试,因为它仅公开一个测试端点。在对包含多个嵌套查询的请求进行故障排除时,开发人员如何才能知道瓶颈在哪里,或者是什么导致请求失败?
这些都是在设计API时需要考虑的问题。不过也有好消息,即使存在些局限,性能优化和测试也能轻松完成。
查询有多快呢?
进入OpticQL,这是OSLabs Beta最近启动的开源项目,旨在通过性能测试解决上述问题。OpticQL是一个桌面应用程序,它为GraphQL API提供了用户友好的测试平台,并结合了轻量级的NPM软件包,该软件包使开发人员能够将应用程序无缝连接到OpticQL,导入其架构并捕获数据库请求的性能指标。
OpticQL的功能包括:
· 模式可视化,以图形方式表示所有模式的字段和边。所有类型名称都以颜色编码和动态视图连接到其字段,还提供了模式可视化的全屏视图。
· 输入字段以编写和提交查询和修改。当查询或修改发送到OpticQL时,架构的所有受影响部分将变为绿色,以指示请求已“到达”它们。
· 包含返回的响应数据、细粒度的resolver跟踪信息,以及请求触发的所有错误的列表的视图。
· 以毫秒为单位的请求执行情况的图形化概览,可选择查看最新请求的性能,并与对OpticQL作出的历史请求的性能进行比较。
· 浏览受查询影响的每个字段的扩展性能指标的更多选项。
对于希望测试和优化GraphQL API性能的开发人员而言,OpticQL强大且易于使用,你可以在OpticsQL的网站下载它或了解更多信息。