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.
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
.
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!