我想生成POST数据的解码结果。在转换“string”时,很多代码都被“浪费”了。这使得代码变得丑陋。有更好的解决方案吗?
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你的代码会是什么呢?
发布于 2011-11-19 01:05:34
Snap会自动对请求进行解码,并通过Request数据类型将其提供给您。它提供了用于检索请求的函数getRequest和withRequest,以及用于获取各个部分的许多其他访问器函数。
还有一些方便的函数用于常见的操作。要获取POST或get参数,请参阅getParam。
Snap将其作为ByteString提供给您,因为此API位于相当低的抽象级别,将如何处理文本编码等事情留给用户。我建议您使用效率更高的文本类型,而不是字符串。Readable类型类还提供了一种机制,用于消除这些转换的一些样板。数字和文本的默认实例采用UTF8编码。
https://stackoverflow.com/questions/8184196
复制相似问题