Grails 2.3.8 RESTful API

时间:2014-08-05 01:48:33

标签: rest grails

我在Mac上使用Grails 2.3.8。

我希望使用Grails快速开发RESTful API。我从Web服务的基本文档开始,在这里找到我的版本: http://grails.org/doc/2.3.8/guide/webServices.html#domainResources

这似乎表明我可以在Grails中创建一个简单的Domain Class,然后使用grails.rest中的@Resource进行注释,如下所示(直接来自上面的文档):

import grails.rest.*

@Resource(uri='/books', formats=['json', 'xml'])

class Book {

    String title

    static constraints = {
        title blank:false
    }
}

当我将此文件放入grails-app / domain目录并运行应用程序时,文档建议我应该能够使用cURL通过HTTP添加“Book”对象:

curl -i -X POST -H "Content-Type: application/json" -d '{"title":"Along Came A Spider"}' localhost:8080/myapp/books

但是这给了我HTTP 422,其中包含以下消息:

HTTP/1.1 422 Unprocessable Entity
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 05 Aug 2014 01:46:05 GMT

{"errors":[{"object":"Book","field":"title","rejected-value":null,"message":"Property [title] of class [class Book] cannot be null"}]}

有人可以告诉我这里缺少什么吗?我希望这很简单。

2 个答案:

答案 0 :(得分:0)

正如@raffian在评论中提到的,这是由于Grails 2.3.8中的错误:

https://jira.grails.org/browse/GRAILS-11399

升级解决了这个问题。

答案 1 :(得分:-1)

如果您想快速开发API并拥有共享IO状态,请尝试使用Grails IO工具包。它简化了API开发的ALOT,为您自动化了大量内容,使所有内容保持无状态,并通过共享IO状态改进了API模式。

在SpringOne和硅谷Grails用户组上发表演讲