首先,我对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中编写所有代码.但我很乐意在哈斯克尔做这件事.有什么提示吗?
我用Happstack编写了类似的东西.
我所做的是创建一个类型来表示我的Web应用程序的所有可能的响应.
data AppResponse = Foo String Int | Bar [String] | etc
Run Code Online (Sandbox Code Playgroud)
然后编写我的处理程序以返回此类型的值:
home :: ServerPart AppResponse
user :: UserId -> ServerPart AppResponse
Run Code Online (Sandbox Code Playgroud)
等等,
然后我编写了以不同格式呈现响应的函数:
jsonResponse :: AppResponse -> JSON
xmlResponse :: AppResponse -> XML
Run Code Online (Sandbox Code Playgroud)
等等
然后有一个简单的过滤器,它查看Accept标题并决定使用哪些转换函数.
这种方法很好,因为:
newFormatResponse :: AppResponse -> NewFormat.该AppResponse类型详细说明了每个可能的响应,因此您无需在整个代码中查找甚至可能的响应.有一个专门讨论这个主题的haskellwiki页面.其中HappStack和Yesod是最成熟的.对于初学者,我会推荐HappStack,因为Yesod使用了相当多的QuasiQuotes魔力.
HappStack在其状态模块中只有一些魔力.据我所知,这将在HappStack 7中被改变,在那里它将被改为使用MACID商店,它不那么神奇,并且具有更少的样板.
如果你想要一些简单的东西,你应该看看Snap框架.
| 归档时间: |
|
| 查看次数: |
5675 次 |
| 最近记录: |