【问题标题】:Create a custom happstack response code创建自定义 happstack 响应代码
【发布时间】:2018-05-17 19:10:17
【问题描述】:

我一直在尝试创建自定义happstack 响应405 "Method not allowed",因此如果有人使用POSTPUT 方法调用API,他们将得到此响应。我是happstack 的新手。有什么想法可以做到吗?

【问题讨论】:

    标签: haskell happstack


    【解决方案1】:

    ok :: (FilterMonad Response m) => a -> m a 函数实现为[src]

    ok :: (FilterMonad Response m) => a -> m a
    ok = resp 200
    

    因此,它与您编写 ok 响应的方式相同,只是您应该使用带有自定义返回码的 resp :: (FilterMonad Response m) => Int -> b -> m b

    例如:

    resp 405 "Method not allowed"
    

    所以我们可以例如阻止 PUTPOST 请求,例如:

    main :: IO ()
    main = simpleHTTP nullConf $ msum
             [ do method GET
                  ok $ "This is allowed.\n"
             , do method PUT
                  (resp 405) $ "Method not allowed"
             , do method POST
                  (resp 405) $ "Method not allowed"
             ]
    

    【讨论】:

    • 感谢您的回复,我收到此错误-在“resp”的第二个参数中,即“不允许方法”在“do”块的 stmt 中:resp 405 "Method not allowed" 在表达式中:do { method PUT; resp 405 "Method not allowed" } -- 我试图找出问题所在,但没有运气。
    • 嗯.. 我想我忘记了一些括号。编辑了答案。
    • 我遇到了同样的错误 -- • 没有由文字“不允许方法”引起的 (Data.String.IsString Response) 实例 • 在 '($)' 的第二个参数中, 即 '"Method not allowed"' 在 'do' 块的 stmt 中: (resp 405) $ "Method not allowed" 在 '($)' 的第二个参数中,即 'do { method [PUT, POST] ; (resp 405) $ "方法不允许" }' --
    • 您在同一列表中包含PUTPOST
    • 是的,抱歉错了副本,这是一个 -- 没有 (Data.String.IsString Response) 的实例来自文字“不允许的方法”' • 在 '($) 的第二个参数中',即 '"Method not allowed"' 在 'do' 块的 stmt 中:(resp 405) $"Method not allowed" 在表达式中:do { method PUT; (resp 405) $ "方法不允许" }
    猜你喜欢
    • 2014-10-22
    • 2022-01-16
    • 1970-01-01
    • 2020-04-10
    • 2020-08-22
    • 2018-02-28
    • 2017-09-11
    • 2019-04-08
    • 1970-01-01
    相关资源
    最近更新 更多