- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在两个不同的项目中工作,以实现 Pivotal Tracker 工具的客户端绑定(bind)。 One project使用 wreq library ,而the other依赖 servant .
我想合并这两个项目,但我不确定使用哪种设计方法。因此,可以帮助我解决这个问题的问题是:
将 API 定义为类型有什么具体优势(除了可读性之外)吗?
哪个错误处理将为图书馆的用户生成更少的代码,仆人的 EitherT ServantError IO ()
或者wreq的异常风格?
最佳答案
两者都在底层使用http-client
。
在 Haskell 中,编写 Web API 绑定(bind)最耗时的部分是数据定义和 JSON 序列化规范。 wreq
实现使用 Lensy,wreq
是 Lensy HTTP 库。
之后,您需要提供一些函数(使用 IO
)从正确的端点获取数据:
getStory :: Options -> Int -> Int -> IO Story
getStory options projectId storyId =
getOne options $ "/projects/" ++ show projectId ++ "/stories/" ++ show storyId
或
type API = "services" :> "v5" :> "stories"
:> Header "X-TrackerToken" Text
:> Capture ":storyId" StoryId
:> Get '[JSON] Story
story :: Text -> StoryId -> EitherT ServantErr IO Story
story :<|> ... = client api ...
它们并没有那么不同。使用wreq
(或直接http-client
),您可能会实现一些辅助函数(例如getOne
)来进行提取;当使用 servant
时,你可以“免费”获得它。
关于haskell - HTTP API 客户端的 Wreq 或 Servant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34245490/
我想手动创建一个 Response 来模拟 Web 服务器,类似于 this博客文章。但是,我使用的 Network.Wreq 库并未显示 Response 的构造函数。如何手动创建响应? 最佳答案
我非常努力地了解如何使用 lenses 和 wreq,结果它真的让我慢了下来。 错误似乎是声称这里有一些不匹配的类型。我不确定如何处理它。我对 haskell 还很陌生,这些镜头非常令人困惑。然而,w
如何使用 wreq 仅下载响应的前 1 KiB?图书馆? 理论上我可以使用 Range HTTP header 。但是,这需要服务器的支持,我不能依赖它。 一旦客户端上有足够的数据,我该如何中止请求?
我是 Haskell 初学者,目前正在使用 wreq围绕 api 制作一个简单的包装器。我想发送 if-modified-since header (如果提供时间)。我正在以下列方式这样做。 getR
我正在使用 wreq 进行一些 http 调用并希望捕获任何异常并返回 Either类型。我尝试了类似的方法,但无法弄清楚如何操作调用,以便它进行类型检查。 -- exhaustive patter
我想用一些已知的 cookie 键值对(例如 k1=v1; k2=v2; ...)使用 wreq 发出 HTTP 请求, 但找不到创建它们的便捷方法。 因为 Cookie有很多字段,我更喜欢智能构造函
我正在使用 cabal 沙箱,在编译 wreq 库时出现此错误: Network/Wreq/Lens/Machinery.hs:20:58: Couldn't match type `[Nam
给定一个 curl 请求的形式: curl --header "Content-Type: text/xml;charset=UTF-8" --data @somefile.xml http://ht
我试图在 cygwin 中安装 wreq 包并收到以下错误: $ cabal install wreq Resolving dependencies... Configuring wreq-0.5.2
在 IHP 项目中,我尝试添加 wreq至 default.nix如 https://ihp.digitallyinduced.com/Guide/recipes.html#making-a-http
以下是我希望能够使用 wreq 发送 PUT 请求的方式: {-# LANGUAGE OverloadedStrings #-} import Network.Wreq main = put "htt
我使用 Spock 在 Haskell 中编写了一个非常简单的应用程序和 wreq .我想写一些测试,但我不知道该怎么做。 该应用程序所做的只是向另一台服务器发出 HTTP 请求,并将 JSON 响应
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 7 年前。 Improv
我正在尝试编写一些代码来对 json API 执行一些请求。我有这个功能: apiLogin = do r FormValue (Maybe a) -- Defined in ‘Netw
我有一个接受 json 请求的服务器,它们可以与 python 客户端一起正常工作。我正在尝试在 haskell 中做同样的事情。 例如我的 python 客户端有以下代码 conn = JSONRP
我是一名优秀的程序员,十分优秀!