如何解析 graphql 查询以获取 go 中的操作名称?
php小编百草为您介绍如何解析 GraphQL 查询以获取 Go 中的操作名称。GraphQL是一种查询语言,用于获取和修改数据。在Go语言中,我们可以使用一些库来解析GraphQL查询,并提取出操作名称。具体的步骤是,首先解析GraphQL查询字符串,然后获取根节点,接着遍历根节点的子节点,判断节点类型是否为操作类型,如果是,则获取操作名称。通过这种方式,我们可以轻松地从GraphQL查询中提取出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 的一部分,而 node 是由 ast.operationdefinition 实现的接口。
因此,为了提取operationdefinition节点的数据,您需要执行断言。
for _, d := range p.Definitions {
if oper, ok := d.(*ast.OperationDefinition); ok {
fmt.Println(oper.Operation)
}
}
以上就是如何解析 graphql 查询以获取 go 中的操作名称?的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341