2

嗨,我是 GraphQL 的新手。

我想将现有端点迁移到 GraphQL 端点 (Java)。为了继续执行端点的应用程序逻辑,我需要该HttpServletRequest对象。

如何访问HttpServletRequest突变函数中的对象?我尝试将它作为参数传递,但我必须声明一个HttpServetRequest类型。

有没有办法在突变中访问上述对象?有没有办法声明外部库的类型?

谢谢你。

4

1 回答 1

1

这通常使用共享上下文来完成。执行操作时,您可以传递一个任意对象,所有Datafetchers(解析器)都可以通过DataFetchingEnvironment#getContext.

例如

graphQL.execute(ExecutionInput.newExecutionInput()
    .query(operation)
    .context(servletRequest) //this is where you pass any object you need
    .build());

对于较旧的 graphql-java 版本:

graphQL.execute(query, context);

稍后在DataFetcher您的查询/突变中:

HttpServletRequest request = environment.getContext();

这也是执行授权的常用方法:通过上下文传入用户对象。

于 2018-02-16T09:51:37.330 回答