[譯] 怎樣使用GraphQL - 進階 - 3.工具和生態系統

英文原版地址:https://www.howtographql.com/...api

您可能已經意識到,GraphQL生態系統正在以驚人的速度增加。之因此如此,緣由之一是GraphQL使咱們很容易開發出優秀的工具。在本節中,咱們將看到爲何會這樣,以及已經存在生態系統中有的一些驚人的工具。瀏覽器

若是您熟悉GraphQL基礎知識,您可能知道GraphQL的類型系統如何幫助咱們快速定義API的最外層。它容許開發人員清楚地定義API的功能,還能夠根據Schema去驗證傳入的查詢內容。服務器

GraphQL神奇的是,這些功能不單單是服務器所知道的。GraphQL容許客戶端向服務器詢問其Schema的信息。 GraphQL調用這個introspection。curl

introspection

模式的設計者已經知道模式是什麼樣的,但客戶端如何得知,能夠經過GraphQL API訪問哪些數據?咱們能夠經過查詢__schema元字段來詢問GraphQL,該元字段始終在符合規範的查詢根類型上可用。編輯器

query {
  __schema {
    types {
      name
    }
  }
}

以此Schema爲例:工具

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

type Author {
  posts: [Post!]!
}

type Post {
  title: String!
}

若是咱們發送上述的introspection查詢,咱們會獲得如下結果:post

{
  "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"
        }
      ]
    }
  }
}

咱們能夠看到,咱們查詢了Schema上的全部類型。咱們獲得咱們定義的對象類型和預約義類型。咱們甚至能夠再查詢introspection類型!開發工具

對於introspection類型,不單單能拿到名字。看下面的例子:測試

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

在這個例子中,咱們使用__type元字段來查詢一個類型,咱們獲得它的名字和描述。此查詢的結果:url

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

如你所見,introspection是GraphQL很是強大的功能,咱們只是瞭解了一點皮毛。在規範中,會詳細介紹introspection模式中哪些字段和類型是可用的。

GraphQL生態系統中的許多工具都是經過introspection系統提供了神奇的功能。例如文檔瀏覽器,自動補全,代碼生成,和其餘一切可能!在構建和使用GraphQL API時,當你重度使用introspection ,最有用的工具是GraphiQL。

GraphiQL

GraphiQL是用於編寫,驗證和測試GraphQL查詢的運行在瀏覽器中的IDE。它有用於GraphQL查詢的編輯器,配有自動補全和驗證以及文檔瀏覽,能夠快速呈現出模式的結構(由introspection提供)。

這是一個很是強大的開發工具。它容許您在GraphQL服務器上調試和嘗試查詢,而無需經過curl去寫GraphQL查詢。

試一試吧! http://graphql.org/swapi-grap...

相關文章
相關標籤/搜索