一种查询语言,一种是Facebook开发的API查询语言。
GraphQL 这种方式能够将原有 RESTful 风格时的多次请求聚合成一次请求,可以定制查询结果(结构)。
{
user(uid:1) {
uid
name
}
}
{
"data": {
"user": {
"uid": "1",
"name": "xxx"
}
}
}
schema {
query: Query //所有查询请求
mutation: Mutation //所有改变服务器资源的请求
}
GraphQL大体的解析流程就是遇到一个Query之后,尝试使用它的Resolver取值,之后再对返回值进行解析,这个过程是递归的,直到所解析Field的类型是Scalar Type(标量类型)为止。
go get github.com/graphql-go/graphql
GraphQL的schema可以自动生成,具体操作可查看graphq-cli文档,步骤大致包括npm包的安装、graphql-cli工具的安装,配置文件的更改(此处需要指定服务对外暴露的地址) ,执行graphql get-schema 命令。
DataLoader
分页
test_case
query {
user(id: "1001"){
id,
name,
friends{
id,
name
}
}
}
query {
order(token:"Token a7c89cc30732b191cf6aa5ce43c99cscfsvfe9",
sn_startswith:"",
limit:3,
page:1)
{
id
sn
price
order_item{
id
item_sn
sku_name
}
}
}
自省查询可能是你在GraphQL中唯一的GET请求。不管是query还是mutation,如果你要传递请求体,GraphQL请求方式都应该是POST
查询__schema以列出所有该schema中定义的类型,并获取每一个的细节
query {
__schema {
types {
name
kind
description
fields {
name
}
}
}
}
查询__type以获取任意类型的细节
query {
__type(name: "Repository") {
name
kind
description
fields {
name
}
}
}
参考资料:
官网入门:http://graphql.cn/learn/
https://docs.shenjian.io/use/graphql/graphql.html