Я нашел решение своей проблемы.
Да, я могу связать HttpHandlers, как упоминали Джерард и Хонза Брестан, используя оператор fish (>=>
).Причина, по которой я не смог выполнить эту работу, заключалась в том, что я также создал оператор fish для типа Result
в открытом модуле.По сути, я создал правильный рыбный суп
Как только я реорганизовал свой код, чтобы модуль, содержащий оператор Result
fish, не был открыт в этой области, все работало нормально, как и ожидалось.
Еще один момент, о котором следует помнить, это то, что кэширование ответов должно вызываться перед финализирующим HttpHandler, в противном случае оно не будет вызываться:
// Simplified code
let resultToJson =
function
| Ok o -> publicResponseCaching 10 (Some "Origin") >=> Successful.ok(json o)
| Error e -> noResponseCaching >=> ServerErrors.internalError(text e)