У меня есть две идеи:
1: перехватывать каждый HTTP-запрос, фильтровать реальные вызовы GraphQL, извлеките исходную полезную нагрузку тела HTTP-запроса, а затем отправьте ее с помощью HttpClient для исходной службы GraphQL.
Мне не удалось сделать это с перехватчиком, исходная полезная нагрузка тела HTTP-запроса будет удален после того, как Hotchocolate GraphQL завершит его анализ. RequestBuilder будет иметь исходную полезную нагрузку по частям, и я не уверен на 100%, что смогу собрать исходную (почти нет).
Код: Выделить всё
public class HttpRequestInterceptor : DefaultHttpRequestInterceptor
{
public override ValueTask OnCreateAsync(HttpContext context,
IRequestExecutor requestExecutor, OperationRequestBuilder requestBuilder,
CancellationToken cancellationToken)
{
//Extract original query from context and send it by HttpClient -> context.Request.Body is empty after GraphQL processing
return base.OnCreateAsync(context, requestExecutor, requestBuilder,
cancellationToken);
}
}
2. Получите частичный запрос из RequestBuilder для каждого запроса:
Я настроил конечную точку запроса GraphQL следующим образом:
Код: Выделить всё
public IEnumerable GetFoo([Service] IQueryRequestBuilder requestBuilder)
{
//If this GraphQL query endpoint is being hit, extract the query for this endpoint only from requestBuilder, then forward it by HttpClient
}
public IEnumerable GetFooAlternative([Service] IQueryRequestBuilder requestBuilder)
{
//If this GraphQL query endpoint is being hit, extract the query for this endpoint only from requestBuilder, then forward it by HttpClient
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... tp-request
Мобильная версия