Maison > développement back-end > Golang > Comment analyser la requête graphql pour obtenir le nom de l'opération en cours ?

Comment analyser la requête graphql pour obtenir le nom de l'opération en cours ?

PHPz
Libérer: 2024-02-09 13:57:08
avant
1039 Les gens l'ont consulté

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

l'éditeur php Baicao vous présente comment analyser la requête GraphQL pour obtenir le nom de l'opération dans Go. GraphQL est un langage de requête utilisé pour obtenir et modifier des données. Dans le langage Go, nous pouvons utiliser certaines bibliothèques pour analyser les requêtes GraphQL et extraire les noms d'opérations. Les étapes spécifiques consistent d'abord à analyser la chaîne de requête GraphQL, puis à obtenir le nœud racine, puis à parcourir les nœuds enfants du nœud racine pour déterminer si le type de nœud est un type d'opération. Si tel est le cas, obtenez le nom de l'opération. De cette façon, nous pouvons facilement extraire le nom de l'opération dans Go à partir de la requête GraphQL pour un traitement et une opération ultérieurs.

Contenu de la question

J'utilise cette bibliothèque go pour analyser les chaînes de requête graphql : github.com/graphql-go/graphql/language/parser.

J'ai le code suivant :

query := "subscription event {event(on: "xxxx") {msg    __typename  }}"
p, err := parser.Parse(parser.ParseParams{Source: query})
Copier après la connexion

Le champ p*ast.document的实例。 p 有一个 definitions renvoyé, qui est un tableau ast.node[].

Mais je ne sais pas comment obtenir le nom de l'opération à partir de la requête. Dans ce cas, ça devrait être subscription.

Solution

Parce que p.definitions fait partie de node, et node est l'interface implémentée par ast.operationdefinition.

Ainsi, afin d'extraire les données du nœud de définition d'opération, vous devez effectuer une assertion.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal