可执行文件包含要处置的能够的操作列表,其中包括操作类型(查询、修正或订阅)、操作称号、要查询或写入的字段和一个选择集,该选择集准确定义了将从操作前往的数据。选择集是 GraphQL 的最大价值所在——它们允许客户端查询特定的数据集并接纳包含所央求信息的照应:不多不少。
GET /graphql?query={ books(id:12) { authors { firstName, lastName } title, yearPublished, length }
{
Query { // operation type
books (id:12) { // operation endpoint
authors { // requested fields
firstName
lastName
}
title
yearPublished
}
}
}
有关 GraphQL 标准的结构和语法的更多信息,请参阅 GraphQL 的文档。(https://graphql.github.io/graphql-spec/June2018/#sec-Overview)
接上去,我们将看下 GraphQL 中查询的结构。
6 GraphQL 查询解析
下面是一个结构化的 GraphQL 查询,用于获取特定书籍的数据,包括作者的姓和名
GET /graphql?query={ books(id:12) { authors { firstName, lastName } title, yearPublished, length }
{
Query { // operation type
books (id:12) { // operation endpoint
authors { // requested fields
firstName
lastName
}
title
yearPublished
}
}
}
这一切都可以经过一个查询由 GraphQL 效劳器逻辑解析和处置完成。当把它与 REST 架构中相反结构的央求停止比较时,GraphQL 的优势就末尾显现出来了。
让我们看看下面的 REST 央求结构,然后重点讨论其中的一些差异!
7 REST 央求解析
要向 REST API 收回相反的央求,客户端首先需求向可以前往图书数据的端点发送一个央求,并将图书 id 作为参数传入:
GET /books/12
这个央求能够会前往一个包含特定图书一切数据的对象,例如:
{
"title" : "The Hitchhiker's Guide to the Galaxy",
"authorID": 42,
"yearPublished" : 1978,
"length": 208,
"genre": "Science Fiction"
}
在我 们的例子里,与相反的 GraphQL 查询相比,该照应有两个缺陷:
REST 照应包含相似 genre 这样的额外数据,前往的信息超出了我们的需求。
REST 需求再发送一个央求来取得我们实践上正在查找的数据:这个特定作者的一切书籍。
为了取得这些数据,我们需求运用我们的 authorID 收回一个额外的央求:
GET /authors/42
这个央求的照应应该包含我们正在查找的一切数据:
{
"firstName": "Douglas",
"lastName": "Adams"
}
(责任编辑:admin)