Apiman: пользовательская политика, которая читает тело запроса до завершения обработки запроса.
Я пытаюсь реализовать пользовательский плагин Apiman, содержащий политику, которая добавляет заголовок, необходимый для некоторой (пользовательской) аутентификации бэкэнд-API. Чтобы вычислить заголовок, создается хеш из нескольких вещей, включая тело запроса.
До сих пор я использовал AbstractMappedDataPolicy
в качестве базового класса для моей политики и doApply(ApiRequest request, ...)
реализован для того, чтобы вычислить требуемый заголовок. Я также реализовал
protected abstract IReadWriteStream<ApiRequest> requestDataHandler(ApiRequest request, IPolicyContext context, C policyConfiguration);
для чтения (и последующего хеширования) тела запроса.
Кажется, что чтение тела запроса происходит после применения политики, как указано в документации:
Тело запроса или ответа не начнет потоковую передачу до того, как будет вызван соответствующий doApply, однако все еще возможно прервать диалог во время фазы потоковой передачи с помощью сигнализации doFailure или doError.
Насколько я могу сказать, нет никакого способа обойти это. Поскольку моя политика требует тела, хотя прежде чем он сможет завершить обработку запроса, я не уверен, как решить этот случай. Есть ли другой способ, позволяющий прочитать тело до или во время обработки запроса?