Ответ 1
WAI Middleware
является просто преобразованием над Application
:
type Middleware = Application -> Application
И Application
- это просто обработчик:
type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
Все, что вам нужно сделать, это определить обработчик, который будет записывать все, что вы хотите, и делегировать "реальную работу" вниз по течению:
-- note that this is equivalent to Application -> Application
logAllMiddleware :: Application -> Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
logAllMiddleware app req respond = do
print . unpack . requestBody req
app req respond
Пожалуйста, имейте в виду, что я написал этот код без доступа к ghc. Это может быть не совсем правильно.