gpt4 book ai didi

grails - Grails解释json以找到操作方法?

转载 作者:行者123 更新时间:2023-12-02 14:03:17 24 4
gpt4 key购买 nike

考虑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将尝试查找名称等于该元素值的 Action !

例如 :
curl -X POST http://localhost:8080/backoffice/action/submit \ 
-H 'Content-Type: application/json' \
-d '{"foo":"bar","action":"bar"}'

结果为 404错误,因为grails试图找到uri /action/bar.dispatch!

如何禁用此奇怪功能?

我的 UrlMappings.groovy:
 static mappings = {
"/$controller/$action?/$id?"(parseRequest: true){
constraints {
// apply constraints here
}
}

行为是否归因于 parseRequest=true吗?我使用此参数能够使用json中的CommandObject。

最佳答案

问题是parseRequest:true,它解析发布的JSON并将其值添加到params。如果JSON包含action,它将设置params.action,这将反过来影响执行哪个 Controller Action 。

您可能值得向http://jira.grails.org提交JIRA报告,以寻求某种机制来从parseRequest中排除某些参数,或者更改优先级,以便在UrlMappings时从URL提取的参数会覆盖JSON中提供的参数,而不是-反之亦然。

关于grails - Grails解释json以找到操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13342351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com