【问题标题】:Grails with JAX-RS vs UrlMappings for RESTful Services用于 RESTful 服务的 JAX-RS 与 UrlMappings 的 Grails
【发布时间】:2010-10-27 20:10:46
【问题描述】:

我开始研究 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
}

Grails:

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

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

有人对此有意见吗?

【问题讨论】:

    标签: json rest grails jax-rs url-mapping


    【解决方案1】:

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

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

    【讨论】:

    • 这就是我的倾向,亚伦。我想如果以后事情变得更复杂,我总是可以改变机制。
    【解决方案2】:

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

    grails generate-resource 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-08
      • 2013-06-26
      • 2011-03-02
      • 2013-06-03
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多