Как мы можем получить HttpServletRequest(DefaultGlobalContext) для GraphQL из RequestContextHolder для GraphQL (используя graphql-spqr-spring-boot-starter)?
Я использую graphql-spqr-spring-boot-starter
библиотека для переноса существующего проекта Rest API на GraphQL. У меня есть приведенный ниже фрагмент кода для получения текущегоHttpServletRequest
из RequestContextHolder
для Rest API:
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes()).getRequest();
Однако это возвращает значение null для GraphQL. Я считаю, что это правильно, потому что для GraphQL мы должны использоватьDefaultGlobalContext<ServletWebRequest>
и нет HttpServletRequest
. Но я не уверен, как мы можем это сделать.
Но я попробовал ниже фрагмент кода:
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
return (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST);
Но не вышло - requestAttributes
возвращает null.
Я очень новичок в GraphQL, может ли кто-нибудь помочь мне узнать, как получить HttpServletRequest (DefaultGlobalContext) для GraphQL? Это будет очень полезно.
1 ответ
Это выглядит так:
@GraphQLMutation
public void whateverMutation(@GraphQLRootContext DefaultGlobalContext<NativeWebRequest> ctx) {
HttpServletRequest req = ctx.getNativeRequest().getNativeRequest(HttpServletRequest.class);
HttpServletResponse res = ctx.getNativeRequest().getNativeResponse(HttpServletResponse.class);
...
}