GraphQL SPQR - 如何获取客户端使用查询请求的字段列表
GraphQL SPQR - How to get the list of the fields were requested by client using a query
有没有办法检索客户端在 GraphQL 查询中请求的字段列表?
假设我有以下类型:
type Book {
isbn: String
title: String
genre: String
author: Author
}
type Author {
name: String
surname: String
age: Int
}
在用@GraphQLQuery 注释的方法中 Java 端有没有办法知道客户端请求的字段?
例如,有以下查询:
query {
book ( isbn = "12345" ) {
title
genre
}
}
query {
book ( isbn = "12345" ) {
title
author {
name
surname
}
}
}
我可以知道第一个查询请求的字段标题和书的类型
以及 Book 中的第二个必需标题以及作者的名字和姓氏?
谢谢
马西莫
您可以通过@GraphQLEnvironment
获取此信息。如果你只需要直接的子字段,你可以像这样注入名称:
@GraphQLQuery
public Book book(String isbn, @GraphQLEnvironment Set<String> subfields) {
...
}
如果您想要所有子字段或其他选择信息,您可以插入 ResolutionEnvironment
并从那里获取 DataFetcherEnvironment
。这反过来又让您可以访问整个 SelectionSet
.
@GraphQLQuery
public Book book(String isbn, @GraphQLEnvironment ResolutionEnvironment env) {
DataFetchingFieldSelectionSet selection = env.dataFetchingEnvironment.getSelectionSet();
...
}
有没有办法检索客户端在 GraphQL 查询中请求的字段列表?
假设我有以下类型:
type Book {
isbn: String
title: String
genre: String
author: Author
}
type Author {
name: String
surname: String
age: Int
}
在用@GraphQLQuery 注释的方法中 Java 端有没有办法知道客户端请求的字段?
例如,有以下查询:
query {
book ( isbn = "12345" ) {
title
genre
}
}
query {
book ( isbn = "12345" ) {
title
author {
name
surname
}
}
}
我可以知道第一个查询请求的字段标题和书的类型 以及 Book 中的第二个必需标题以及作者的名字和姓氏?
谢谢 马西莫
您可以通过@GraphQLEnvironment
获取此信息。如果你只需要直接的子字段,你可以像这样注入名称:
@GraphQLQuery
public Book book(String isbn, @GraphQLEnvironment Set<String> subfields) {
...
}
如果您想要所有子字段或其他选择信息,您可以插入 ResolutionEnvironment
并从那里获取 DataFetcherEnvironment
。这反过来又让您可以访问整个 SelectionSet
.
@GraphQLQuery
public Book book(String isbn, @GraphQLEnvironment ResolutionEnvironment env) {
DataFetchingFieldSelectionSet selection = env.dataFetchingEnvironment.getSelectionSet();
...
}