Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 斯科蒂和波斯特·帕玛斯_Haskell_Post_Scotty - Fatal编程技术网

Haskell 斯科蒂和波斯特·帕玛斯

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//时事通讯/创

我现在与Scotty web服务器有一个问题-
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
本身强制单位类型:/