标签: wreq

Haskell/Wreq - 关于http请求的复杂类型签名的建议

我是Haskell初学者,目前正在使用wreq围绕api制作一个简单的包装器.if-modified-since如果提供时间,我想发送标题.我是按照以下方式这样做的.

getResponse :: (FormatTime t, Exception e) => File -> Maybe t -> IO (Either e (Response L.ByteString))
getResponse file (Just t) =
  let formattedTime = (B.pack . formatTime defaultTimeLocale rfc822DateFormat) t
      opts = defaults & header "if-modified-since" .~ [formattedTime]
  in try $ getWith opts $ buildUrl file

getResponse file Nothing = try $ (get $ buildUrl file)
Run Code Online (Sandbox Code Playgroud)

我注意到304 (not modified)响应是作为异常回来的,所以这是我使用该Either类型的理由.我想为可能使用此api包装器的人提供错误可见性.

假设请求成功,我想将响应主体解析为我库中定义的相应类型.如果服务器上的某些内容发生了变化,我可能无法正常反序列化,因此我选择使用该Maybe类型来解决此问题.

getPayload :: FromJSON b => (Either e (Response …
Run Code Online (Sandbox Code Playgroud)

haskell types functional-programming wreq

6
推荐指数
1
解决办法
147
查看次数

标签 统计

functional-programming ×1

haskell ×1

types ×1

wreq ×1