Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menghuraikan pertanyaan graphql untuk mendapatkan nama operasi dalam go?

Bagaimana untuk menghuraikan pertanyaan graphql untuk mendapatkan nama operasi dalam go?

PHPz
PHPzke hadapan
2024-02-09 13:57:08995semak imbas

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

editor php Baicao memperkenalkan anda cara menghuraikan pertanyaan GraphQL untuk mendapatkan nama operasi dalam Go. GraphQL ialah bahasa pertanyaan yang digunakan untuk mendapatkan dan mengubah suai data. Dalam bahasa Go, kita boleh menggunakan beberapa perpustakaan untuk menghuraikan pertanyaan GraphQL dan mengekstrak nama operasi. Langkah-langkah khusus adalah untuk menghuraikan rentetan pertanyaan GraphQL dahulu, kemudian mendapatkan nod akar, dan kemudian melintasi nod anak nod akar untuk menentukan sama ada jenis nod adalah jenis operasi. Jika ya, dapatkan nama operasi. Dengan cara ini, kami boleh mengekstrak nama operasi dalam Go dengan mudah daripada pertanyaan GraphQL untuk pemprosesan dan operasi seterusnya.

Kandungan soalan

Saya menggunakan perpustakaan go ini untuk menghuraikan rentetan pertanyaan graphql: github.com/graphql-go/graphql/language/parser.

Saya mempunyai kod berikut:

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

Medan p*ast.document的实例。 p 有一个 definitions yang dikembalikan, yang merupakan tatasusunan ast.node[].

Tetapi saya tidak tahu bagaimana untuk mendapatkan nama operasi daripada pertanyaan. Dalam kes ini, ia sepatutnya subscription.

Penyelesaian

Oleh kerana p.definitions ialah sebahagian daripada nod dan nod ialah antara muka yang dilaksanakan oleh ast.operationdefinition.

Jadi, untuk mengekstrak data nod definisi operasi, anda perlu melakukan penegasan.

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

Atas ialah kandungan terperinci Bagaimana untuk menghuraikan pertanyaan graphql untuk mendapatkan nama operasi dalam go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam