首先,我对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做这件事。有什么提示吗?
发布于 2011-07-14 04:56:32
我已经使用Happstack编写了类似的代码。
我所做的是创建一个类型来表示我的web应用程序的所有可能的响应。
data AppResponse = Foo String Int | Bar [String] | etc然后编写我的处理程序来返回此类型的值:
home :: ServerPart AppResponse
user :: UserId -> ServerPart AppResponse等,
然后,我编写了以不同格式呈现响应的函数:
jsonResponse :: AppResponse -> JSON
xmlResponse :: AppResponse -> XML等。
然后有一个简单的过滤器,它查看Accept头并决定使用这些转换函数中的哪一个。
这种方法很好,因为:
newFormatResponse :: AppResponse -> NewFormat。的AppResponse类型详细说明了每种可能的响应,因此您不必遍历所有的代码来找出可能的响应。
发布于 2011-07-12 20:30:54
有一个专门针对此主题的haskellwiki page。其中,HappStack和Yesod最为成熟。对于初学者,我会推荐HappStack,因为Yesod使用了相当多的QuasiQuotes魔法。
HappStack只有在它的状态模块中有一些魔力。据我所知,这将在HappStack 7中更改,它将更改为使用MACID存储,它没有那么神奇,也没有那么多样板文件。
如果你想要一些简单的东西,你应该看看Snap framework。
https://stackoverflow.com/questions/6663888
复制相似问题