我现在正在学习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
我做错了什么?
答案 0 :(得分:1)
这是一个只涉及更新(而不是新创建的实例)的错误。我已经完成了修复工作,我们将在2.4.1中包含此修复程序。请参阅https://jira.grails.org/browse/GRAILS-11462。
缺点是即使请求有正文,也会使用请求参数进行更新。修复是为了更改,所以当更新完成时,如果请求有一个正文,那么使用正文,如果没有,请求使用参数。
对不起,感谢麻烦并感谢您提供的意见。