1

我开始研究 grails 的 JAX-RS 插件,并认为这是要走的路,主要是因为它基于 JSR-311,而且我认为遵循标准通常是明智的做法。然而,使用 Grail 的 UrlMappings 似乎我基本上实现了同样的事情。我想我错过了一些东西,但是,我们并没有做任何过于复杂的事情。我们基本上只需要通过 API 公开 CRUD。对两个版本执行相同操作的示例:

JAX-RS:

@PUT
@Consumes(['application/json'])
@Produces(['application/json'])
Response putUser(User user) {
  user.save(flush:true)
  ok user
}

圣杯:

def update = {
  def user = new User(params['user'])
  user.save(flush:true)
  render user as JSON
}

显然,这是一个过于简单的例子,就像我说的,也许我遗漏了一些重要的东西。此外,Grails 内置机制的好处是我可以同时使用内容协商。

有人对此有任何意见吗?

4

2 回答 2

1

我必须做出同样的决定,我发现使用 URL 映射更容易,因为 API 并不复杂,而且需要支持的 API 调用数量有限。

如果归结为基于 LOE 和能够支持实施的资源更容易维护的内容。

于 2010-10-27T20:24:03.953 回答
0

如果您要直接为您的域模型创建 Web 服务,那么 jax-rs 插件非常有用。它为您提供了一个“生成资源”命令,该命令会自动为您的模型创建 CRUD api。

grails 生成资源 mydomain.Model

这部分似乎工作正常,但是,我遇到了很多关于插件的错误/问题,我最终不得不使用 URL 映射来实现 REST 服务。

尽管 URL-mapping 方法似乎更需要编码,但它工作得很好。

import grails.converters.JSON

class ModelServiceController {
    def id = params.id
    def myModel = MyModel.findById(id)
    render myModel as JSON
}

这是 grails REST 的链接

http://grails.org/doc/1.0.x/guide/13.%20Web%20Services.html

于 2011-09-26T21:23:29.437 回答