首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在haskell中使用snapframework在不同的'string‘类型之间进行转换?

如何避免在haskell中使用snapframework在不同的'string‘类型之间进行转换?
EN

Stack Overflow用户
提问于 2011-11-18 22:44:28
回答 1查看 641关注 0票数 7

我想生成POST数据的解码结果。在转换“string”时,很多代码都被“浪费”了。这使得代码变得丑陋。有更好的解决方案吗?

代码语言:javascript
复制
import           Codec.Binary.Url (decode')
import qualified Data.ByteString.Lazy.Char8 as L (unpack)
import qualified Data.ByteString.Char8 as S (unpack, pack)
import qualified Data.ByteString.Lazy as LBS (pack)

decodeUrlHandler :: Snap()
decodeUrlHandler = do
    body <- readRequestBody (maxBound :: Int64)
    writeLBS $ LBS.pack $ map (fromMaybe 0) $ decode' $ L.unpack body

你的代码会是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-19 01:05:34

Snap会自动对请求进行解码,并通过Request数据类型将其提供给您。它提供了用于检索请求的函数getRequestwithRequest,以及用于获取各个部分的许多其他访问器函数。

还有一些方便的函数用于常见的操作。要获取POST或get参数,请参阅getParam

Snap将其作为ByteString提供给您,因为此API位于相当低的抽象级别,将如何处理文本编码等事情留给用户。我建议您使用效率更高的文本类型,而不是字符串。Readable类型类还提供了一种机制,用于消除这些转换的一些样板。数字和文本的默认实例采用UTF8编码。

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

https://stackoverflow.com/questions/8184196

复制
相关文章

相似问题

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