首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >haskell中的Web服务框架

haskell中的Web服务框架
EN

Stack Overflow用户
提问于 2011-07-12 20:04:39
回答 2查看 6K关注 0票数 13

首先,我对Haskell非常陌生--但我必须说,自从我开始使用Haskell以来,我就爱上了它。我做过大量的C、Java、python和perl。Haskell肯定对我越来越有吸引力了。不久前,我用perl/python为我的一个个人项目写了一个web应用程序/服务--我想知道我是否可以把它作为一个有趣的项目转移到haskell上,并做一些haskell hackery来看看它是如何发展的。

我知道在haskell中有一些优秀的web应用程序框架。我想做的是有一个用haskell编写的服务,它将响应不同格式的数据(SOAP、REST-xml、REST-json)。我会使用javascript来构建DOM等。所以我的问题是,有没有什么库可以用来动态转换数据的格式呢?或者,考虑到这种情况,您将如何在haskell中执行此操作?

自2008年以来,我就没有参与过这个项目,我最初的想法是使用java社区中的apacheCXF,并用java编写代码。但我很乐意在haskell做这件事。有什么提示吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-14 04:56:32

我已经使用Happstack编写了类似的代码。

我所做的是创建一个类型来表示我的web应用程序的所有可能的响应。

代码语言:javascript
复制
data AppResponse = Foo String Int | Bar [String] | etc

然后编写我的处理程序来返回此类型的值:

代码语言:javascript
复制
home :: ServerPart AppResponse
user :: UserId -> ServerPart AppResponse

等,

然后,我编写了以不同格式呈现响应的函数:

代码语言:javascript
复制
jsonResponse :: AppResponse -> JSON
xmlResponse  :: AppResponse -> XML

等。

然后有一个简单的过滤器,它查看Accept头并决定使用这些转换函数中的哪一个。

这种方法很好,因为:

  1. 大部分代码不需要知道任何关于响应格式(xml、json等)的
  2. 来添加一个新的格式,你只需编写新的函数就可以了,比如newFormatResponse :: AppResponse -> NewFormat

AppResponse类型详细说明了每种可能的响应,因此您不必遍历所有的代码来找出可能的响应。

票数 9
EN

Stack Overflow用户

发布于 2011-07-12 20:30:54

有一个专门针对此主题的haskellwiki page。其中,HappStackYesod最为成熟。对于初学者,我会推荐HappStack,因为Yesod使用了相当多的QuasiQuotes魔法。

HappStack只有在它的状态模块中有一些魔力。据我所知,这将在HappStack 7中更改,它将更改为使用MACID存储,它没有那么神奇,也没有那么多样板文件。

如果你想要一些简单的东西,你应该看看Snap framework

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6663888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档