我正在使用graphql-spqr-spring-boot-starter库将现有的Rest API项目迁移到GraphQL。我有下面一段代码来从RequestContextHolder获取Rest API的当前HttpServletRequest:
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes()).getRequest();但是,对于GraphQL,这将返回null。我相信这是正确的,因为对于GraphQL,我们必须使用DefaultGlobalContext<ServletWebRequest>,而不是HttpServletRequest。但我不确定我们如何做到这一点。
但是,我尝试了以下代码:
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
return (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST); 但它不起作用-- requestAttributes返回null。
我是GraphQL的新手,谁能告诉我怎样才能获得用于GraphQL的HttpServletRequest (DefaultGlobalContext)?这将是非常感谢的。
发布于 2021-04-13 17:59:54
它是这样的:
@GraphQLMutation
public void whateverMutation(@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> ctx) {
HttpServletRequest req = ctx.getNativeRequest().getNativeRequest(HttpServletRequest.class);
HttpServletResponse res = ctx.getNativeRequest().getNativeResponse(HttpServletResponse.class);
...
}https://stackoverflow.com/questions/62339166
复制相似问题