您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    GraphQL vs REST API 架构,谁更胜一筹?
    时间:2020-03-05 12:19 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    GraphQL vs REST API 架构,谁更胜一筹?

    2015年, Facebook开源GraphQL 。 尔后,它在前端Web中大受欢迎。 传统的REST API有何不足?GraphQL优势何在?在本文中, 我们将深化讨论GraphQL的设计准绳,比较 GraphQL 与 REST 的异同,并讨论GraphQL 相对其他架构的优点。

    1 你的 API 应该用哪项技术?

    自从 2015 年 Facebook 开源 GraphQL 标准以来,它就在前端 Web 开发中迅速盛行起来。

    为什么这种新技术会突然盛行起来?

    与传统 REST API 相比,GraphQL 提供了哪些优势?

    我们将讨论 GraphQL 的设计准绳,比较 GraphQL 与 REST 中的相反央求,并 深化讨论 GraphQL 相对其他架构的优点 。

    为了解 GraphQL 作为 API 架构的益处,我们要讨论 API 在客户端 - 效劳器结构中的作用。API(运用顺序编程接口)是一个中间层,它允许效劳器从客户端接纳结构化数据央求,并针对央求的数据发送结构化的照应。设计 API 架构的办法有很多种。

    让我们来研讨一下促使 GraphQL 适宜现代化 Web 运用顺序的重要基本设计准绳。

    2 GraphQL 效劳器的设计准绳

    GraphQL 标准概括了 5 个设计准绳,这使其成为现代前端开发的良益处置方案。 我们看一下 GraphQL 的设计准绳,并以 Facebook 旧事推送作为我们的用例。

    查询为分层结构,运用将查询与照应数据1对1婚配的分层和嵌套字段格式。查询和照应的外形相似于树,可查询每个项的其他嵌套字段。在 Facebook 的旧事推送中,这种结构允许一个查询前往一个帖子列表、每个特定帖子的评论,以及每个评论的点赞。

    该结构以产品为中心,关注前端希望如何接纳数据,并构建交付所需的运转时。这使得 Facebook 的旧事推送可经过一次央求从后端获取需求的一切数据,使效劳器按照 GraphQL 的标准从不同的端点获取数据。

    它运用特定于运用顺序的类型系统,该系统使开发人员能在执行前确保查询运用了有效类型,并且语法正确。例如,旧事推送的 GraphQL 形式要求字段“user”必须包含一个字符串,而“likes”必须包含一个数字。假设查询试图添加不同类型的输入,GraphQL 将在执行查询前抛出一个错误。

    GraphQL 查询是在客户端指定的,因此,客户端确切知道它将以何种格式接纳数据。这意味着,假设前端央求的格式是包含用户名、评论和点赞的 post 数据,那么来自 Facebook 旧事推送的央求会构建在一个对象中,而不是像其他架构那样构建多个独自的数据块。

    运用 GraphQL 的效劳器结构必须是内省的,或许可由 GraphQL 本人查询。于是才有了像 GraphiQL 或 GraphQL playground 这样的弱小工具。这两种工具都可以让 Facebook 开发人员准确地看到在他们的效劳器上运用了哪些查询和字段。

    为讨论向 GraphQL 的转变,以及这些设计准绳如何给开发带来益处。

    我们首先深化了解传统的 REST API 架构和它的不足之处。

    3 传统的 RESTful 架构

    REST 架构的设计范式侧重于分配 HTTP 央求办法(GET、POST、PUT、PATCH、DELETE)和 URL 端点之间的关系。

    GraphQL vs REST API 架构,谁更胜一筹?

    在 REST 架构中,办法和端点的每个组合失掉不同的封装功用。假设客户端需求的数据特定端点 / 办法不提供,则能够需求额外央求。从 REST 央求前往的数据格式依赖于端点—不能保证这些数据会按照前端需求的方式停止格式化。为运用来自照应的数据(格式与缺省状况下从端点前往的格式不同),必须在客户端编写数据解析和数据操作。

    接上去,让我们看看 GraphQL 标准与 REST 的不同之处,以及它的优点。这些优点使这个新架构成为特别适宜处置客户端和效劳器之间数据交付成绩的处置方案。

    4 GraphQL 架构

    与 RESTful API 一样,GraphQL API 设计用于处置 HTTP 央求并对这些央求提供照应。无论如何,这就是相似之处。REST API 构建在央求办法和端点之间的衔接上,而 GraphQL API 被设计为只经过一个端点,一直运用 POST 央求停止查询,其 URL 通常是 yourdomain.com/graphql。

    GraphQL vs REST API 架构,谁更胜一筹?

    央求抵达 GraphQL 端点后,客户端央求的载荷完全在央求体中处置。这个央求体必须遵照 GraphQL 标准,API 必须有适当的效劳器端逻辑来处置这些央求并提供适当的照应。

    这提供了比 RESTful API 更流利的客户端体验,后者能够要求客户端针对多个数据块收回多个央求,并在数据前往后停止操作。

    为了阐明 GraphQL 是如何完成这一点的,让我们分解一下 GraphQL 效劳器的结构。

    5 GraphQL 效劳器

    启用 GraphQL 逻辑的效劳器端逻辑由定义了效劳器功用的 Documents 组成。这些 Documents 包含可执行文件和类型系统定义。望文生义,类型系统定义为每个数据字段定义可接受的类型和格式输入及结果。

    (责任编辑:admin)