gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:02:10 27 4
gpt4 key购买 nike

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

 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes()).getRequest();

但是,对于 GraphQL,这将返回 null。我相信这是正确的,因为对于 GraphQL 我们必须使用 DefaultGlobalContext<ServletWebRequest>而不是 HttpServletRequest .但我不确定我们该怎么做。

但是,我尝试了下面的一段代码:

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
return (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);

但它没有用 - requestAttributes返回空值。

我是 GraphQL 的新手,谁能帮我知道如何为 GraphQL 获取 HttpServletRequest (DefaultGlobalContext)?我们将不胜感激。

最佳答案

它是这样的:

@GraphQLMutation
public void whateverMutation(@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> ctx) {
HttpServletRequest req = ctx.getNativeRequest().getNativeRequest(HttpServletRequest.class);
HttpServletResponse res = ctx.getNativeRequest().getNativeResponse(HttpServletResponse.class);
...
}

关于java - 我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphql-spqr-spring-boot-starter)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62339166/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com