我开始查看用于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内置机制的好处是我可以利用内容协商。
有人对此有任何意见吗?
答案 0 :(得分:1)
我必须做出同样的决定,我发现使用URL映射更容易,因为API并不复杂,并且需要支持的API调用数量有限。
如果归结为基于LOE和能够支持实施的资源而更容易维护的内容。
答案 1 :(得分:0)
如果您直接为您的域模型创建Web服务,则jax-rs插件非常有用。它为您提供了一个“generate-resource”命令,可以自动为您的模型创建CRUD api。
grails generate-resource mydomain.Model
这部分似乎工作正常,但是,我遇到了一些插件的错误/问题,我最终不得不使用URL映射来实现REST服务。
虽然URL映射方法似乎更多编码,但它可以很好地工作。
import grails.converters.JSON
class ModelServiceController {
def id = params.id
def myModel = MyModel.findById(id)
render myModel as JSON
}
这是grails REST的链接