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

PHPz
Lepaskan: 2024-02-09 13:57:08
ke hadapan
995 orang telah melayarinya

如何解析 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})
Salin selepas log masuk

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)
    }
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!