美文网首页
GraphQL学习记录 查询 二

GraphQL学习记录 查询 二

作者: 既然可以颠覆何必循规蹈矩 | 来源:发表于2019-08-09 14:50 被阅读0次

    测试工具 GraphiQL 。 测试地址:http://snowtooth.moonhighway.com

    1. 联合类型

    返回的 列表 不止有一种类型。(on 是指定选择条件, ... 展开)

    query schedule {
      agenda {
        ...on Workout {
          name
          reps
        }
        ...on StudyGroup {
          name
          subject
          students
        }
      }
    }
    

    返回结果如下

    {
      "data": {
        "agenda" : [
          {
              "name": "Comp Sci",
              "subject": "Computer Secience",
              "student": 12
          },
          {
              "name": "Cardio",
              "reps": 100
          },
          ......
        ]
      }
    }
    

    2. 接口

    单个字段想要返回多个对象类型的时候使用

    其中 start 和 end 为 接口中的属性
    query schedule {
      agenda {
        name
        start
        end
      }
    }
    

    3. 变更 mutation

    新增 修改 删除 都是变更。

    新建一条数据,一首歌,传入了标题 是否为封面 以及演员的名字 三个属性,然后要求新建数据成功之后给我吗返回 id 以及其中的两个属性。(可以随意定义返回的属性)

    mutation createSong {
      addSong (title: "谢谢你", numberOne: true,performerName:"TLC") {
        id
        title
        numberOne
      }
    }
    

    返回数据如下

    {
      "data": {
         "addSong": {
            "id": "7dh4kj8ui09sh487k9o1je7jl",
            "title": "谢谢你",
            "numberOne": true
          }
      }
    }
    

    修改一条数据

    mutation changTitle {
      setSongTitle(id: "7dh4kj8ui09sh487k9o1je7jl", title: "不谢你了") {
        id
        title
      }
    }
    

    4. 使用查询变量

    就是用把死数据换成变量
    用哪 $+变量名 来表示变量,也可以把performerName 命名为by。不过最好是一一对应。

    mutation createSong($title: String!, $numberOne: Booblean, $by: String!) {
      addSong (title: $title, numberOne:  $numberOne, performerName: $by") {
        id
        title
        numberOne
      }
    }
    

    5. 订阅 subscription

    客户端监听从服务器实时返回的数据。发送一个修改数据的GraphQL,订阅就能收到返回的数据。

    subscription {
      liftStatusChange {
        name
        capacity
        status
      }
    }
    

    6. 自检

    相当于查看接口文档。
    name 是属性名
    description 是属性的描述。测试结果可以自行查看 文章一的测试链接。

    query liftDetails {
      __type(name:"Lift") {
        name
        fields {
          name
          description
          type {
            name
            description
          }
        }
      }
    }
    

    7. 抽象语法树

    相关文章

      网友评论

          本文标题:GraphQL学习记录 查询 二

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