首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何从RequestContextHolder的GraphQL中获取GraphQL的HttpServletRequest(DefaultGlobalContext) (使用graphql-spqr-spring-boot-starter)?

我们如何从RequestContextHolder的GraphQL中获取GraphQL的HttpServletRequest(DefaultGlobalContext) (使用graphql-spqr-spring-boot-starter)?
EN

Stack Overflow用户
提问于 2020-06-12 15:02:49
回答 1查看 313关注 0票数 1

我正在使用graphql-spqr-spring-boot-starter库将现有的Rest API项目迁移到GraphQL。我有下面一段代码来从RequestContextHolder获取Rest API的当前HttpServletRequest

代码语言:javascript
复制
 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
        .currentRequestAttributes()).getRequest();

但是,对于GraphQL,这将返回null。我相信这是正确的,因为对于GraphQL,我们必须使用DefaultGlobalContext<ServletWebRequest>,而不是HttpServletRequest。但我不确定我们如何做到这一点。

但是,我尝试了以下代码:

代码语言:javascript
复制
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
return (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST); 

但它不起作用-- requestAttributes返回null。

我是GraphQL的新手,谁能告诉我怎样才能获得用于GraphQL的HttpServletRequest (DefaultGlobalContext)?这将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2021-04-13 17:59:54

它是这样的:

代码语言:javascript
复制
@GraphQLMutation
public void whateverMutation(@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> ctx) {
    HttpServletRequest req = ctx.getNativeRequest().getNativeRequest(HttpServletRequest.class);
    HttpServletResponse res = ctx.getNativeRequest().getNativeResponse(HttpServletResponse.class);
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62339166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档