在Haskell的Wai/Warp中处理POST请求
我有一个wai/WAP应用程序。我如何处理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
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
函数-您能匹配该结果吗?