【问题标题】:Grails databinding and allowed HTTP methodsGrails 数据绑定和允许的 HTTP 方法
【发布时间】:2023-03-12 16:12:01
【问题描述】:

我在控制器中有以下操作

class RegisterController {

    static allowedMethods = [register: 'POST']

    def register(User user) {
        // action body omitted
    }
}

如果用户尝试通过GET /register/register/newUser 调用此操作,我会遇到数据绑定失败,因为newUser 无法绑定到用户的Long id 属性。

起初这似乎是合理的,但是当通过 HTTP GET 调用 user 时,IMO 不应尝试绑定它,因为我已声明只允许 POST。

奇怪的是,如果我将操作更改为:

class RegisterController {

    static allowedMethods = [register: 'POST']

    def register() {
        User user = new User(params)
    }
}

然后再次尝试使用GET /register/register/newUser 调用它,然后我得到预期的 HTTP 方法不允许 (405) 错误。在我看来,数据绑定是在检查 HTTP 请求类型之前发生的,这就是为什么我在第一种情况下收到绑定错误,在第二种情况下收到 405 错误。

我不应该在这两种情况下都得到 405 吗?

【问题讨论】:

    标签: grails data-binding


    【解决方案1】:

    是的,在这两种情况下您都应该得到 405。在https://jira.grails.org/browse/GRAILS 提交报告,我们将把它理顺。我们有一个 AST 转换,它添加了命令对象处理代码并添加了 allowedMethods 处理代码。听起来它们的顺序可能不正确。会把它理顺。感谢您的反馈。

    【讨论】:

    猜你喜欢
    • 2013-08-09
    • 2019-10-28
    • 2018-12-20
    • 1970-01-01
    • 2020-07-19
    • 2015-11-25
    • 2012-06-29
    • 2016-08-05
    • 2015-01-24
    相关资源
    最近更新 更多