Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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的Wai/Warp中处理POST请求_Haskell_Haskell Wai_Haskell Warp - Fatal编程技术网

在Haskell的Wai/Warp中处理POST请求

在Haskell的Wai/Warp中处理POST请求,haskell,haskell-wai,haskell-warp,Haskell,Haskell Wai,Haskell Warp,我有一个wai/WAP应用程序。我如何处理post请求?我有这个: app :: Application app request respond = respond $ case rawPathInfo request of "/" -> responseFile status200 ............ "/some_post_req/" -> ..... 如何指定some_post_req必须是post?包中的parseReque

我有一个wai/WAP应用程序。我如何处理post请求?我有这个:

app :: Application
app request respond = 
    respond $ case rawPathInfo request of
        "/"  -> responseFile status200 ............
        "/some_post_req/" -> .....

如何指定
some_post_req
必须是post?

包中的
parseRequestBody
允许您从请求正文中获取所需的数据:

(params, files) <- parseRequestBody lbsBackEnd request

(参数、文件)比较
Network.Wai.requestMethod
Network.Wai.methodPost
的结果应该很简单:

app request respond
  | requestMethod request == methodPost
  = respond $ case rawPathInfo request of
    {- handle POST routes -}

  | otherwise
  = {- handle other request methods -}
由于有
methodPost
methodGet
、&c的常量,您不妨使用它们,但
Method
ByteString
的别名,因此您也可以使用
OverloadedStrings
扩展名:

{-# LANGUAGE OverloadedStrings #-}
然后与字符串文字进行比较:

requestMethod request == "POST"
或模式匹配:

case requestMethod request of
  "POST" -> {- … -}
  "GET" -> {- … -}
  …

我在
Network.Wai
中看到一个
requestMethod
函数-您能匹配该结果吗?