【问题标题】:Grails 3.1.9 : POST not recognizedGrails 3.1.9:POST 无法识别
【发布时间】:2016-07-26 22:18:57
【问题描述】:

我正在使用带有 rest-api 配置文件的 Grails 3.1.9。 在创建模型和控制器(通过 grails CLI)并启动应用程序之后。 我无法通过 Postman/Curl 等创建 POST。

如果我尝试直接调用 save 方法,例如:

http://localhost:8080/mymodel/create

一切正常。但是如果我尝试通过 POST 调用它,方法 save() 将永远不会被调用(索引是默认操作)。

附言我的控制器上有这个:

    static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

为什么会这样?

【问题讨论】:

  • 一种解决方法是可能的,通过 params.getRequest().getMethod() 过滤,但是...

标签: grails grails-3.1


【解决方案1】:

您应该通过 POST 调用 save() 方法,而不是 create(),后者通常仅用于显示已创建元素的表单视图。所以改为执行

curl -H "Content-Type: application/json" -X POST -d '{"foo":"bar"}' http://localhost:8080/mymodel/create

使用:

curl -H "Content-Type: application/json" -X POST -d '{"foo":"bar"}' http://localhost:8080/mymodel/save

当然,如果你正确使用了 url 映射而不是 http://localhost:8080/mymodel/save,你应该使用简单的 http://localhost:8080/mymodel

【讨论】:

  • 感谢您的帮助,但我的请求有误。我调用 save() 而不是 create()。
【解决方案2】:

确定这是一个错误,我在 github 上打开了一个问题。像关闭一样不是错误

我忘记在UrlMappings.groovy 上添加以下行:

  "/foos"(resources:"foo")

https://github.com/grails/grails-core/issues/10067

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2017-03-03
    • 2012-08-04
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多