我编写了一个REST控制器,我想在控制器上为/ rest / id允许DELETE,而不是/ rest /。这是我的UrlMappings:
"/rest"(controller: "restController", parseRequest: true) {
action = [GET: "list", POST: "save"]
}
"/rest/$id"(controller: "restController", parseRequest: true) {
action = [GET: "show", PUT: "update", DELETE: "delete"]
}
当我的DELETE请求命中/休息时,我希望得到“方法不被允许”/ 405,但是我得到了404.我想也许请求被转换为/ rest / 0,但它没有达到断点我放入控制器的删除方法。
知道它为什么会这样运作,或者我可以看看解决问题的方法吗?
答案 0 :(得分:0)
我认为这有点模棱两可,因为Grails从控制器的allowedMethods闭包中获得405s。
由于没有映射到DELETE for rest /,框架返回404,这似乎是正确的。
文档似乎要求您执行类似
的操作delete(Long id) {
if(!id){
response.sendError 405
} else {
...
}
}
http://grails.org/doc/latest/ref/Controllers/allowedMethods.html
如果您认为这种行为不正确,可能值得提高JIRA。从grails-core中的测试来看,它似乎根本不涉及405s。