我如何解析graphql查询以获得操作名称?



我使用这个go库来解析graphql查询字符串:github.com/graphql-go/graphql/language/parser.

我有下面的代码:

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

返回的p*ast.Document的一个实例。p有一个Definitions字段,它是一个ast.Node[]数组。

但是我不知道的是如何从查询中获得操作名称。在本例中,它应该是subscription

由于p. definitions是Node的一个切片,而Node是由ast.OperationDefinition实现的接口。

因此,为了提取OperationDefinition节点的数据,您需要执行断言。

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

最新更新