fullstack GraphQL学习笔记(7)工具和生态系统

1、内省

客户端可以向服务端请求schema的信息:通过__schema

query {
  __schema {
    types {
      name
    }
  }
}

  假设schema如下:

type Query {
  author(id: ID!): Author
}

type Author {
  posts: [Post!]!
}

type Post {
  title: String!
}

  那么上面的查询会返回:

{
  "data": {
    "__schema": {
      "types": [
        {
          "name": "Query"
        },
        {
          "name": "Author"
        },
        {
          "name": "Post"
        },
        {
          "name": "ID"
        },
        {
          "name": "String"
        },
        {
          "name": "__Schema"
        },
        {
          "name": "__Type"
        },
        {
          "name": "__TypeKind"
        },
        {
          "name": "__Field"
        },
        {
          "name": "__InputValue"
        },
        {
          "name": "__EnumValue"
        },
        {
          "name": "__Directive"
        },
        {
          "name": "__DirectiveLocation"
        }
      ]
    }
  }
}

  我们可以得到所有类型的名称,包括单一类型和复合类型。内省不仅可以获取类型的名称,还可以获取类型的其他信息,如下:

{
  __type(name: "Author") {
    name
    description
  }
}

  得到的结果:

{
  "data": {
    "__type": {
      "name": "Author",
      "description": "The author of a post.",
    }
  }
}

  可以看到GraphQL的内省功能提供了强大的能力,有很多的工具都是依赖GraphQL的自身功能。使用GraphQL最有用的工具GraphiQL,就是主要依赖内省功能。

Graph-playGround也是一款非常强大的IDE工具。

 

posted @ 2018-08-28 14:54  tutu_python  阅读(131)  评论(0)    收藏  举报