Grails 2.1.1 では次のアクションを考慮します。
class ActionController {
static allowedMethods = [submit: 'POST']
def submit() {
render([ok: true, data: request.JSON] as JSON)
}
}
次のコマンド:
curl -X POST http://localhost:8080/backoffice/action/submit \
-H 'Content-Type: application/json' \
-d '{"foo":"bar"}'
戻り値
{"ok" : true, "data" : {"foo" : "bar"}}
しかし、 jsonに という要素がある場合action
、Grails はその要素の値に等しい名前のアクションを見つけようとします。
例えば :
curl -X POST http://localhost:8080/backoffice/action/submit \
-H 'Content-Type: application/json' \
-d '{"foo":"bar","action":"bar"}'
grails が uri を見つけようとしているため、404 エラーが発生/action/bar.dispatch
します!!
この奇妙な機能を無効にするにはどうすればよいですか?
私のUrlMappings.groovy
:
static mappings = {
"/$controller/$action?/$id?"(parseRequest: true){
constraints {
// apply constraints here
}
}
この動作は が原因parseRequest=true
ですか? このパラメーターを使用して、json から CommandObject を使用できるようにします。