Baas接口标准(三)——GraphQL客户端开发之基本查询、添加操作名称、使用查询参数之变量、指令、别名、通过mutation关键字实现变更操作
第4章 GraphQL客户端开发
基本查询
按需获取需要的数据
// 查询hero对象的name属性 { hero { name } }
// 查结果 { "data": { "hero": { "name": "lisi" } } }
- 注意事项
- GraphQL只有一个URL地址,客户端查询的所有信息都通过该地址获取数据
- 可以更加需要按照实际的需求获取特定的数据
操作名称
有多个操作时,操作名称是必须的,为了调试的方便,推荐添加操作名
- 规则:操作类型 操作名称(操作名称自定义)
- 操作类型主要有如下两种
- query 用于查询
- mutation 用于变更操作(添加、修改、删除)
# 查询名称 query helloInfo { hello }
# 变更名称 mutation addUser { addUser(userInput: { uname: "lisi", pwd: "123" }) { id username } }
- 注意事项
- 推荐所有的查询和变更操作添加操作名称
查询参数
有时候需要根据特定的条件查询数据,此时可以使用查询参数
// 查询id是1,姓名是lisi的学生信息 query param { stu(id: 1, sname: "lisi") { sname age gender } }
// 查询结果 { "data": { "stu": { "sname": "lisi", "age": 12, "gender": true } } }
- 注意事项
- 查询字段可以携带参数,并且可以携带多个参数,参数之间通过逗号隔开
变量
有时字段的参数需要动态提供,而不是固定的值,此时可以使用变量,其实类似于函数中的形参
# $id: Int (变量名称: 变量类型) query param($id: Int, $num: Float) { stu(id: $id) { id sname scores(num: $num) { cname score } } } // 分离的变量字典 { "id": 1, "num": 99 }
- 注意事项
- 变量类型必须是标量、枚举型或者输入对象类型
- 变量可以有默认值 ($id: Int = 1)
指令
有时候查询的字段数量不是固定的,此时可以通过指令的方式进行控制
- 两个指令
@include(if: Boolean)
仅在参数为true
时,包含此字段。@skip(if: Boolean)
如果参数为true
,跳过此字段。
query param($id: Int, $gender: Boolean!) { stu(id: $id) { id sname gender @include(if: $gender) } }
query param($id: Int, $gender: Boolean!) { stu(id: $id) { id sname gender @skip(if: $gender) } }
- 注意事项
- 可以通过这两个指令动态控制查询的字段数量
- 指令用到的变量定义时需要添加!,强制必须提供该值
别名
有时需要通过不同参数值查询相同字段信息,比如查询学生的数学和英语成绩
query alias {
stu {
id sname math: scores(cname: "数学") {
cname score }, english: scores(cname: "英语") {
cname score } } } // 上面的查询结果如下 {
"data": {
"stu": {
"id": 1, "sname": "张三", "math": [ {
"cname": "数学", "score": 98.5 } ], "english": [ {
"cname": "英语", "score": 99.5 } ] } } }
- 注意事项
- 可以通过别名的方式获取特定某几项数据(查询结果的数据格式相同)
变更
改变服务器数据需要用到【变更】(mutation)操作
# 通过具体值方式传递参数 mutation addUserByParam { addUserByParam(uname: "lisi", pwd:"abc") { id uname pwd } }
# 通过变量方式传递参数 mutation addUserByInput($userInput: UserInput) { addUserByInput(userInput: $userInput) { id uname pwd } }
# 参数传递 { "userInput": { "uname": "lisi", "pwd": "123" } }
- 注意事项
- 通过mutation关键字实现变更操作
- userInput变量并非标量,而是一个输入类型
- 参数的传递可以通过普通参数,也可以使用输入类型,一般较为复杂的数据采用输入类型
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-python/10728.html