Haskell 斯科蒂和波斯特·帕玛斯
我现在与Scotty web服务器有一个问题-Haskell 斯科蒂和波斯特·帕玛斯,haskell,post,scotty,Haskell,Post,Scotty,我现在与Scotty web服务器有一个问题-rescue对未找到的参数不起作用-我仍然得到一个404,代码如下: post "/newsletter/create" ( do (param "subscriber[email]") `rescue` (\msg -> text msg) formContent <- param "subscriber[email]" text $ "found! " ++ show formContent ) post//时事通讯/创
rescue
对未找到的参数不起作用-我仍然得到一个404,代码如下:
post "/newsletter/create" ( do
(param "subscriber[email]") `rescue` (\msg -> text msg)
formContent <- param "subscriber[email]"
text $ "found! " ++ show formContent )
post//时事通讯/创建”(do)
(参数“订户[电子邮件]”`rescue`(\msg->text msg)
formContent经过一些清理,我让它开始工作:
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import qualified Data.Text.Lazy as TL
main = scotty 3000 $ do
post "/newsletter/create" $ do
formContent <- (param "subscriber[email]") `rescue` (\msg -> return msg)
text $ "found! " `TL.append` formContent
{-#语言重载字符串}
导入Web.Scotty
将限定的Data.Text.Lazy作为TL导入
main=scotty 3000$do
发布“/时事通讯/创建“$do”
formContent返回消息)
text$“found!”`TL.append`formContent
我做了很多修改,但关键是rescue
用作param
的包装器,不改变任何内部状态,因此不应该调用它两次。方括号没有给我带来任何麻烦。这很有道理!德普。非常感谢。我想知道param_
或params_
非破坏性函数是否是个好主意…我刚刚发现Scotty有一个很糟糕的地方-如果你从一个参数中解救,你就不能实际使用参数:rescue::ActionM a->(Text->ActionM a)->ActionM a
如果你的处理程序是ActionM()
,则无法提取该参数,因为它的类型将是()
,而不是Text
:(get
本身强制单位类型:/