[英]Get the query name from the request in "github.com/graphql-go/graphql"
[英]How can I parse graphql query to get operation name in go?
我正在使用这个 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 的切片,它是 ast.OperationDefinition 实现的接口。
因此,为了提取 OperationDefinition 节点的数据,您需要执行一个断言。
for _, d := range p.Definitions {
if oper, ok := d.(*ast.OperationDefinition); ok {
fmt.Println(oper.Operation)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.