4

给定一个 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()不接受父母的指令


4

0 回答 0