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