带有@Resource的Grails REST - PUT没有更新

时间:2014-06-01 09:29:00

标签: rest grails

我现在正在学习grails(2.4.0)并且在自动生成的REST方法方面遇到了一个奇怪的问题。

所以,我有一个简单的域名

@Resource(uri = '/unit', formats = ['json'])
class Unit {
    String name;
}

我可以使用GET / POST / DELETE方法成功列出/创建/删除实例,但PUT方法什么都不做:

curl -i -X PUT -H "Content-Type: application/json" -d '{"name":"fail", "id":65}' localhost:8080/app/unit/65
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Location: http://localhost:8080/app/unit/65
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sun, 01 Jun 2014 09:25:02 GMT

{"class":"app.Unit","id":65,"name":"test"}

后续的GET请求也将返回name:test而不是name:fail

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是一个只涉及更新(而不是新创建的实例)的错误。我已经完成了修复工作,我们将在2.4.1中包含此修复程序。请参阅https://jira.grails.org/browse/GRAILS-11462

缺点是即使请求有正文,也会使用请求参数进行更新。修复是为了更改,所以当更新完成时,如果请求有一个正文,那么使用正文,如果没有,请求使用参数。

对不起,感谢麻烦并感谢您提供的意见。