GraphQL是一种用于API的查询语言也是一个满足你数据查询的运行时,GraphQL对你的API中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,查询总是返回可预测的结果。

1、REST VS GraphQL
GraphQL目前被认为是革命性的API工具,因为它可以让客户端在请求中指定希望得到的数据,而不像传统的REST那样只能呆板地在服务端进行预定义。下面通过一个例子对比两种API:
(1)REST的核心思想就是资源,每个资源都能用一个URL来表示,你能通过一个GET请求访问该URL从而获取该资源。根据当今大多数API的定义,你很有可能会得到一份JSON格式的数据响应,整个过程大概是这样:

GET /books/1
{
  "title": "Black Hole Blues",
  "author": { 
    "firstName": "Janna",
    "lastName": "Levin"
  }
  // ... more fields here
}

在REST中,一个资源的种类与你获取它的方式是耦合的,比如上面这个例子中的API就可以称之为“book端点”(book endpoint)。

(2)在GraphQL中资源与获取方式定义在schema中,你可能会有Book和Author两个类型(type):

type Book {
  id: ID
  title: String
  published: Date
  price: String
  author: Author
}
type Author {
  id: ID
  firstName: String
  lastName: String
  books: [Book]
}

REST与GraphQL的一个核心差异:资源的描述信息与其获取方式相分离。如果要去访问某个特定的book或者author资源,我们需要在schema中创建一个Query类型:

GET /graphql?query={ book(id: "1") { title, author { firstName } } }
{
  "title": "Black Hole Blues",
  "author": {
    "firstName": "Janna",
  }
}

2、GraphQL with Golang
使用 Golang 和 PostgreSQL 构建一个博客引擎 API https://linux.cn/article-8524-1.html

参考:

标签: golang, GraphQL

评论已关闭