POSTデータのデコード結果を生成したい。多くのコードは 'string'を変換する際に '無駄になります'。それはコードを醜いものにします。より良い解決策はありますか?snapframeworkを使用して、haskellの異なる '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
この目的のコードは何ですか?
私の独自の関数 'fromMaybeW8sToLBS = LBS.packを追加することもできます。 map(fromMaybe 0) ' – wenlong
なぜリクエスト本体を自分でデコードする必要がありますか?あなたはSnapがそれをしないと確信していますか? – nponeccop
@nponeccop、リクエストボディにByteString型があります。私はそれをURLエンコードされた文字列と見なしてデコードします。しかし、デコード '(URLデコード)ではStringが必要で、[多分Word8]を返します。 – wenlong