停止使用REST api
GraphQL方式更好
其他已经被很多开发人员通过HTTP发送数据而GraphQL通常是作为技术取代REST api的遗产。在本文中,我将解释的好处,限制,和这两个之间的差异,这将帮助你决定如何选择你的下一个项目。
其他是什么?
REST (Representational state transfer)是一个API设计的架构,用于实现web服务通过使用一组预定义的无状态的操作(包括得到
,帖子
,把
,删除
)。
REST的核心思想是将检索资源将通过请求资源的URL和一个响应(通常JSON,但是这取决于API)。
其他的好处
- 休息是可伸缩的,因为它把客户机和服务器,这样您就可以轻松地扩展您的应用程序。
- 灵活性是使用其他的另一个优势,因为它可以用来处理不同类型的调用和返回不同的数据格式。
其他的局限性
- Over-fetching——这是当API端点提供比客户要求的更多信息。
- Under-fetching——这是当API端点不提供所有必需的信息。所以,客户端必须使多个请求应用程序需要的一切。
GraphQL是什么?
GraphQL是一个API设计架构,采用不同的方法都被认为是一个图表暗示它的连接。这也意味着你可以定制你的请求以这样一种方式,你可以请求从请求的端点和你会得到任何你而已。我们通过查询和响应。此外,它允许您将不同实体合并到一个查询。
GraphQL的好处
- 获取准确的数据,没有额外的。在GraphQL,你得到你的请求,这是一个伟大的加。
- 更快的发展在客户端。通常,当有数据需求的变化,你只需要修改所需查询并没有太多改变,从而使产品快速迭代。客户端和服务器团队可以独立工作,提供团队都知道数据的结构。
GraphQL的局限性
- 可以一点复杂的对于简单的应用程序、设置类型查询,等等,因为它可以轻松地使用REST。
- 它使用一个单端点而不是HTTP规范后缓存。缓存在网络层是很重要的,因为它可以减少服务器的流量。
简单的例子比较两
例如,假设我们是显示用户的提要的列表用户的帖子和他/她的追随者。在我们的例子中,我们要显示文章的作者、文章以及用户的追随者。
如果我们使用休息,我们至少会使2或3请求,类似于:
/ user / < id >
让用户(作家)细节可能这个名字。/ user / < id > /职位
让用户上传他们的文章的列表。/ user / < id > /追随者
为用户获得追随者的列表。
但在所有这些情况下,我们是over-fetching数据。例如,在第一个请求,我们只需要名字,但我们得到关于用户的所有细节当我们使用这种方法。
这是当GraphQL显示它的力量。我们需要指定的查询,我们可以得到期望的输出。使用GraphQL实现相同的,我们可以使用一个类似的查询:
查询{
用户(id:‘123’) {
的名字
帖子{
标题
}
{追随者
的名字
}
}
}
通过使用这样的查询,我们可以得到一个具有以下属性的JSON响应。整洁简单,不是吗?
GraphQL vs休息
总而言之,这里有一些突出的差异:
1。数据抓取
其他导致over-fetching或under-fetching,而这不是GraphQL的情况。在GraphQL,你所要求的就是你得到的。
2。对象定义(JSON响应)
在其他对象定义后端和GraphQL定义这个对象在前端。
3所示。自动缓存
其他自动将缓存生效而GraphQL没有自动缓存系统,但使用阿波罗等客户端,继电器等将缓存可能。
4所示。错误处理
错误处理GraphQL休息相比要简单得多,通常会给你一个200好了状态码,即使有一个错误。但是,当使用阿波罗等客户端,继电器等非常有可能轻松地处理错误。
结论
在其他GraphQL肯定有很多优势,但它可能并不总是最好的实现。就像我之前说的,取决于您的应用程序的选择,是否选择休息或GraphQL。
我希望这可以帮助你在未来的项目决策。如果你想分享你的经验关于GraphQL或休息,在评论部分。感谢您的阅读!