RESTリソースを呼び出すために使用するClientM
追加のパラメーターを使用して、サーバントのモナドを拡張しようとしています。Token
type TClient a = ReaderT Token ClientM a
次に、サーバント パターン マッチング用に次のように定義します。
get :: Token -> ClientM Text
post :: Token -> Int -> ClientM Text
get :<|> post = client (Proxy :: Proxy MyAPI)
今、私の拡張クライアントが遊びに来ます。これは私がそれを使用する方法です:
getT :: TClient Text
getT = undefined -- implementation to extract token and call 'get'
postT :: Int -> TClient Text
portT = undefined -- implementation to extract token and call 'post'
queries :: TClient Text
queries = do
text1 <- postT 5
text2 <- getT
return (text1 ++ text2)
--| runReaderT and then runClientM
runTClient :: Token -> TClient a -> ClientEnv -> IO (Either ServantError a)
runTClient token tcm env = runClientM (runReaderT tcm token) env
問題は、より良い方法で実装getT
およびpostT
機能する方法です。
現在の解決策を投稿しますが、ここでより経験豊富な haskeller がより良い解決策を提案できることを願っています