当前位置:  开发笔记 > 前端 > 正文

http API客户端的Wreq或Servant?

如何解决《httpAPI客户端的Wreq或Servant?》经验,为你挑选了1个好方法。

我一直在两个不同的项目中为Pivotal Tracker工具实现客户端绑定.一个项目使用wreq库,而另一个项目依赖于servant.

我想合并两个项目,但我不确定使用哪种设计方法.所以有助于我解决这个问题的问题是:

    将我的API定义为一种类型(除了可读性)有什么具体的优势吗?

    哪个错误处理会为库的用户,servant EitherT ServantError IO ()或wreq的Exception样式生成更少的代码?

phadej.. 5

两者都http-client在引擎盖下使用.

在Haskell中,编写Web api绑定最常用的部分是数据定义和JSON序列化规范.该wreq实现使用的镜头,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你一起"免费".



1> phadej..:

两者都http-client在引擎盖下使用.

在Haskell中,编写Web api绑定最常用的部分是数据定义和JSON序列化规范.该wreq实现使用的镜头,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你一起"免费".

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有