繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM