给定一个 graphql 查询
query @my (arg:1) {
foo @my (arg:2) {
bar @my (arg:3)
foobar @my (arg:4)
}
}
和graphql服务器实现使用graphql-spqr
@GraphQLType(name="foo")
public class Foo{
@GraphQLQuery(name="bar")
public String bar;
@GraphQLQuery(name="foobar")
public String foobar;
}
@GraphQLDirective(name="my", locations = {QUERY, FIELD} )
public class MyGraphqlDirective{
@GraphqlInputField("arg")
public int arg;
}
public class GraphqlService{
@GraphQLQuery(name = "foo")
public Foo foo(@Nullable @GraphQLDirective(name="my") MyGraphqlDirective my){
Foo foo=new Foo();
if(my!=null){
foo.bar = String.valueOf(my.arg);
foo.foobar = String.valueOf(my.arg);
}
return foo;
}
}
如果它存在,我可以访问(arg:2)
查询 foo,如果不存在则回(arg:1)
退到。
但是,如果我想在字段 foo 和 foobar 上阅读它,我会遇到问题。
我想让它不可读,滥用@GraphqlContext
每个字段。有没有更简单的方法可以在字段级别存档一些简单的逻辑(例如大写、语言环境、舍入、数字格式)。
也试过dataFetchingEnvironment.getSelectionSet().get().getSubField("edge/node/foo/bar").getSingleField().getDirective()
不接受父母的指令