2010-10-27 52 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