美文网首页GraphQL
学习GraphQL — 简介

学习GraphQL — 简介

作者: 时见疏星 | 来源:发表于2015-12-18 16:07 被阅读39150次

GraphQL 是一个由Facebook提出的 应用层查询语言. 使用 GraphQL, 你可以基于图模式定义你的后端. 然后客户端就可以请求所需要的数据集。

GraphQL

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

GraphQL同样能够让客户端程序高效地批量获取数据. 例如, 看一看下面这个GraphQL请求:

{
  latestPost {
    _id,
    title,
    content,
    author {
      name
    },
    comments {
      content,
      author {
        name
      }
    }
  }
}

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

{
  "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的请求才能获取这些信息。

GraphQL是一个规范

因此, 它可以用于任何平台或语言. 它有一个参考的实现 JavaScript, 由Facebook维护. 还有许多社区维护的实现有许多种语言.

这里是它的规范:http://facebook.github.io/graphql/

一旦你使用了GraphQL,你会想在每个项目中使用它的。

相关文章

网友评论

  • 李乾坤David:摸索中前行!但是这个是大趋势,在国内用的人还很少!
  • 0_0_0_0_0_0_0:楼主,那个 author 的对象是如何在server 写出来的,我怎么都在GraphQLServer 写这种对象多层嵌套,总是出不来结果。求大牛指导
  • CharTen:给我的感觉就是。。。。如果不是怕sql注入,fb的后端程序员巴不得前端程序员请求时直接发送sql语句。。。
    孤独的探索号:@0_0_0_0_0_0_0

    {
    "[]":{ //请求一个数组
    "page":0, //数组条件
    "count":2,
    "Moment":{ //请求一个名为Moment的对象
    "content$":"%a%" //对象条件,搜索content中包含a的动态
    },
    "User":{
    "id@":"/Moment/userId", //缺省依赖路径,从所处容器的父容器路径开始
    "@column":"id,name,head" //指定返回字段
    },
    "Comment[]":{ //请求一个名为Comment的数组,并去除Comment包装
    "count":2,
    "Comment":{
    "momentId@":"[]/Moment/id" //完整依赖路径
    }
    }
    }
    }

    可以去掉注释放这里测试:
    http://139.196.140.118/
    0_0_0_0_0_0_0:楼主,我学着两天多了,但是我却在写 GraphQL 的对象多层嵌套时候,总是写不来 求大牛给个详细的教程,官网的实在是看不明白
    ed3fc1eb00b3:@CharTen 这个技术解决了sql控制粒度不够的问题
  • viney:研究一下

本文标题:学习GraphQL — 简介

本文链接:https://www.haomeiwen.com/subject/eqmphttx.html