我最近与某人交谈,他说他们将完全跳过 HATEOAS REST 端点的开发,转而使用 GraphQL。因此,我很好奇决定何时使用 GraphQL 与 HATEOAS 的标准是什么,或者 GraphQL 一般而言对于 API 网关/边缘服务器架构来说是更好的选择吗?
各自的优缺点是:
专业人士:
缺点:
专业人士:
缺点:
一个有趣的比较是,人们使用 GraphQL 作为 REST API 的前端,但头脑清醒的人不会考虑做相反的事情。如果您采用联合/微服务设计,那么一个 GraphQL 服务器为其他服务器提供前端,他们可以在前端和微服务之间使用通用的 API 规范;如果微服务是 REST 模式,则这一点不太确定。
我认为,只要您牢记要问的正确问题,GraphQL 将成为精心设计的系统的重要组成部分。不幸的是,是否完全跳过 HATEOAS“取决于情况”。
我自己的经验,加上 Phil Sturgeon 的 GraphQL 与 REST:概述
我喜欢 Ed 发布了我的概述的链接,但我认为还有另一篇文章比那篇文章更相关。
两者的状态表示完全不同。
https://apisyouwonthate.com/blog/representing-state-in-rest-and-graphql/
GraphQL 完全无法以有意义且标准化的方式提供一系列“后续步骤”,除了可能推送包含您应该尝试找到的潜在相关突变的字符串数组之外。
即使你这样做了,它也肯定无法帮助你与其他 HTTP API 进行通信,这真是一个耻辱。
总之,就是那篇文章了! :)