首页 > 后端开发 > Golang > 如何解析 graphql 查询以获取 go 中的操作名称?

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

PHPz
发布: 2024-02-09 13:57:08
转载
1032 人浏览过

如何解析 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 中的操作名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板