首頁 >後端開發 >Golang >如何解析 graphql 查詢以取得 go 中的操作名稱?

如何解析 graphql 查詢以取得 go 中的操作名稱?

PHPz
PHPz轉載
2024-02-09 13:57:081040瀏覽

如何解析 graphql 查询以获取 go 中的操作名称?

php小編百草為您介紹如何解析 GraphQL 查詢以取得 Go 中的操作名稱。 GraphQL是一種查詢語言,用於取得和修改資料。在Go語言中,我們可以使用一些函式庫來解析GraphQL查詢,並提取出操作名稱。具體的步驟是,先解析GraphQL查詢字串,然後取得根節點,接著遍歷根節點的子節點,判斷節點類型是否為操作類型,如果是,則取得操作名稱。透過這種方式,我們可以輕鬆地從GraphQL查詢中提取Go中的操作名稱,以便進行後續的處理和操作。

問題內容

我正在使用這個go函式庫來解析graphql查詢字串:github.com/graphql-go/graphql/language/parser

我有以下程式碼:

query := "subscription event {event(on: "xxxx") {msg    __typename  }}"
p, err := parser.Parse(parser.ParseParams{Source: query})

傳回的p*ast.document的實例。 p 有一個 definitions 字段,它是一個 ast.node[] 數組。

但我不知道如何從查詢中取得操作名稱。在本例中,它應該是 subscription

解決方法

因為 p.definitions 是 node 的一部分,而 node 是由 ast.operationdefinition 實作的介面。

因此,為了提取operationdefinition節點的數據,您需要執行斷言。

for _, d := range p.Definitions {
    if oper, ok := d.(*ast.OperationDefinition); ok {
        fmt.Println(oper.Operation)
    }
}

以上是如何解析 graphql 查詢以取得 go 中的操作名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除