簡體   English   中英

GraphQL:不帶通配符(*)的Explore API?

[英]GraphQL: Explore API without a wildcard (*)?

我是GraphQL的新手,我想知道如何在沒有可能的通配符(*)的情況下探索API( https://github.com/graphql/graphql-spec/issues/127 )。

我目前正在使用GraphQL設置無頭Craft CMS,但我真的不知道如何嵌套數據。

使用REST API進行事件時,我沒有機會獲取所有數據,因為我必須設置所有端點,因此也必須知道所有字段名稱。

那么,如何才能輕松探索CraftCMS數據結構?

感謝您對此的任何提示。

干杯

MERC

------編輯-------如果我使用@simonpedro的建議:

{
  __schema {
    types {
      name
      kind
      fields {
        name
      }
    }
  }
}

我可以看到很多類型(?)/字段(?)...例如,我看到:

{
      "name": "FlexibleContentTeaser",
      "kind": "OBJECT",
      "fields": [
        {
          "name": "id"
        },
        {
          "name": "enabled"
        },
        {
          "name": "teaserTitle"
        },
        {
          "name": "text"
        },
        {
          "name": "teaserLink"
        },
        {
          "name": "teaserLinkConnection"
        }
      ]

但是現在我想知道teaserLink ist的結構。 我以某種方式發現teaserLink(這是一個類型為Entries的字段,我可以在其中鏈接到另一個頁面)具有urltitle屬性。

但是,我將如何設置查詢以探索teaserLink可用的屬性?

我嘗試了各種查詢,但總是遇到這樣的消息: GraphiQL警告

如果有人可以給我另一個指針,我將如何找出實際可以查詢的屬性,我將感到非常高興。

謝謝

就我而言,目前還沒有具有該功能的graphql實現。 但是,如果您想做的是探索“數據結構”(即模式),則應使用模式自省功能(為此考慮了這一點)(探索graphql模式)。 例如,一個簡單的graphql自省查詢將如下所示:

{
  __schema {
    types {
      name
      kind
      fields {
        name
      }
    }
  }
}

參考資料: -https : //graphql.org/learn/introspection/

更新以進行編輯:

我想做的事情如下:進行這樣的查詢

{
  __schema {
    types {
      name
      kind
      fields {
        name
        type {
          fields {
            name
          }
        }
      }
    }
  }
}

然后找到所需的類型字段以從中獲取更多信息(這些字段)。 這樣的事情(我不知道這是否可行,只是一個想法):

const typeFlexibleContentTeaser = data.__schema.types.find(t => t === "FlexibleContentTeaser")

const teaserLinkField = typeFlexibleContentTeaser.fields.find(f => f.name === "teaserLink")

const teaserLinkField = teaserLinkField.type.fields;

即,您必須遞歸地遍歷type字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM