2010-10-27 46 views
1

我开始寻找Grails的JAX-RS插件,并认为这是要走的路,主要是因为它基于JSR-311,而我通过的标准是聪明的事情。然而,使用Grail的UrlMappings,我似乎基本上达到了同样的效果。我想我错过了一些东西,但是,我们没有做任何过于复杂的事情。我们基本上只需要通过API公开CRUD。使用JAX-RS和UrlMappings进行REST风格服务的Grails

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构建机制的好处是我可以利用内容协商。

任何人对此有任何意见?

回答

1

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

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

+0

这是一种我如何倾斜,亚伦。我想如果事情变得更复杂,我可以随时更换机制。 – Gregg 2010-10-27 21:23:33

0

如果您直接在您的域模型中创建Web服务,则jax-rs插件非常有用。它为您提供了一个“生成资源”命令,可以为您的模型自动创建CRUD apis。

Grails的生成资源mydomain.Model

这部分似乎很好地工作,但是,我遇到了不少的bug /与我终于实现使用URL的映射的REST服务插件的问题。

虽然URL映射方法似乎更多的编码,它完美的作品。

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