GraphQL 入门: 简介

surile
2021-06-25 / 0 评论 / 45 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年06月25日,已超过409天没有更新,若内容或图片失效,请留言反馈。

GrqphQL是Facebook开发的一个应用层查询语言,后端定义基于图的模式,客户端可以按需查询需要的数据。

kqcd46cn.png

上图所示,查询流程分为几个步骤,涉及多个组件,包括客户端应用程序(Web,手机,桌面APP),一个GraphQL服务器用于解析查询,以及多个不同的数据来源。

客户端数据要求发生变化时,不需要修改后端。因此,你不必因为客户端数据需求的变更而改变你的后端。这解决了管理REST API中最大的问题。

为什么解决了RESE API的大问题,看如下阐述:

注解:
只要你的义务模型没有发生变化,数据模型就不会发生变化,那么我们就不需要修改后端API。前端只需要按需要的字段进行查询即可。如果业务发生了变化,那么我们只需要修改GrqphQL的模型定义。并且实现对应的服务端数据查询逻辑即可。但是传统REST查询是固定,客户端不能指定,GraphQL可以让客户端指定要获取那么手写字段的数据,给客户端带来了极大的灵活性。

GraphQL同样能够让客户端高效的获取数据,例如,看下面这个请求:

{
  latesPost {
    _id 
    title
    content
    author {
      name
    }
    comments {
      content
      author {
        name
      }
    }
  }
}

这个请求获取了一遍博客文章和对应评论与作者信息的数据,下面是请求的返回结果:

{
  "data": {
    "latestPost": {
      "_id": "03390abb5570ce03ae524397d215713b",
      "title": "New Feature: Tracking Error Status with Kadira",
      "content": "Here is a common feedback we received from our users ...",
      "author": {
        "name": "Pahan Sarathchandra"
      },
      "comments": [
        {
          "content": "This is a very good blog post",
          "author": {
            "name": "Arunoda Susiripala"
          }
        },
        {
          "content": "Keep up the good work",
          "author": {
            "name": "Kasun Indi"
          }
        }
      ]
    }
  }
}

如果你使用的是REST的话,你需要调用多个REST API的请求才能获取这些信息。

0

评论 (0)

取消