停止使用REST api

GraphQL方式更好

- - -

图片由布鲁斯火星Unsplash

其他已经被很多开发人员通过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或休息,在评论部分。感谢您的阅读!

- - -

- - -

工程师,摄影师,科技博客。对于开发人员构建产品和写道。我喜欢和爱帮助别人代码:)

Baidu