受基本身份验证保护的 API
type SubApi = API1 :<|> API2 :<|> API3
type API = BasicAuth "foo-realm" AuthData :> SubApi
支持类型的处理程序AuthData -> Handler a
。
我有一组处理程序:
handler1 :: Request1 -> AuthMonad Response
handler2 :: Request2 -> AuthMonad Response
它在 AuthMonad 中运行,这是一个 ReaderT,其上下文部分由 AuthData 构建。使用enter
and AuthMonad :~> Handler
,我可以获得Server API
类型的支持处理程序AuthData -> AuthMonad
,但我真正想做的是使用AuthData
参数作为 runReaderT 的环境。
我对正在进行的类型巫术了解得不够多,enter
无法理解如何做到这一点。有任何想法吗?