Temel KimlikServant
type SubApi = API1 :<|> API2 :<|> API3
type API = BasicAuth "foo-realm" AuthData :> SubApi
ile korunan bir API ile özel bir okuyucu Monad ile kimlik doğrulaması kullanılırken tip AuthData -> Handler a
işleyicileri destekler.
handler1 :: Request1 -> AuthMonad Response
handler2 :: Request2 -> AuthMonad Response
bağlam AuthData kısmen oluşturulan bir ReaderT bir AuthMonad, çalışır:
I işleyicileri kümesi vardır. enter
ve AuthMonad :~> Handler
kullanarak, AuthData -> AuthMonad
türünde Server API
destekleyicileri destekleyebilirim, ancak gerçekten yapmak istediğim, runReaderT ortamını AuthData
argümanını kullanmaktır.
Bunun nasıl yapılacağını anlamak için enter
ile devam eden sihirbazlık türlerinden yeterince bilgim yok. Herhangi bir fikir?
Bu yararlı olabilir Yukarıdaki durumda Ben doğal dönüşümü yaratacak bir işlevi yapılan 'AuthMonad' gerçek bildirimini eklediyseniz. Ayrıca, ne giriyorsun? Onun türünü sağlayamayacaksanız, en azından paketin içinde bulunduğu bir bağlantı sağlayın. – Kwarrtz
Sanırım vücutta etiketlere ek olarak bahsetmeliydim, bu [haskell-hizmetçisine özgü bir sorudur. ] (https://hackage.haskell.org/package/servant) – ewestern
İkinci Kwarrtz: Bence soru, AuthMonad hakkında daha fazla bilgi vermeden cevap vermek zor. Tanımını bilmeden gerekli olan doğal dönüşümü yazmak zordur. – hao