【发布时间】:2011-12-21 23:58:24
【问题描述】:
我有一个控制器,它只允许对某些操作进行 POST:
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
然后有一个测试:
void testUpdateWithGet() {
controller.update()
assert response.status == HttpServletResponse.SC_METHOD_NOT_ALLOWED
}
这在 2.0.0.RC1 中运行良好,但在升级到 Grails 2.0.0 最终版本后,响应中的返回状态为 302。这是为什么呢?
问候
乔纳斯
【问题讨论】:
-
如果我明确设置方法,我会得到相同的
request.method = "GET"。一些类似的测试甚至返回200,这意味着调用正常。 -
值得一提的是,
save操作返回 200,所有控制器的update和delete302。 -
鉴于如果我不是从单元测试而是从命令行通过 curl 测试这个问题并且我无法重现您的 302,我猜想直接调用该方法的处理方式有问题。我建议删除您的 allowedMethods 标准并在您的控制器中打印出 request.method ,然后运行您的测试。只是为了让您可以看到默认值是什么。
-
@JanWikholm - 默认方法始终是 GET。
标签: grails post controller get httpresponse