2015-03-19 71 views
0

我有一個現有的域,控制器視圖(爲後者自動生成),它在瀏覽器中按預期工作。 如果我有.../user/show/1或.../user/show的URL,它也可以在curl中工作,也就是說,我使用違背REST原則的操作。 所以,我已經加入到URLMappings文件Grails,與休息延伸

"/rest/user/$id?"(resource: "user") 

它使用自動生成的控制器。 現在可以使用curl和.../rest/user/1但不能.../rest/user - 它運行show方法而不是索引方法。但是... /用戶會去索引並返回一個列表。 雖然瀏覽器繼續工作,但我注意到這些URL是其他/用戶類型的。

所以我覺得我還沒有真正理解這一點。我可以在URLMappings文件中有兩個指向同一地點的規則嗎?根據Grails 2.4.4文檔,沒有id的url將使用index()方法..../rest/user不是 - 它轉到show()。

我有工作,但我很確定我沒有做對。

問候, 約翰

回答

0

我覺得Grails的創建域雷斯特夫爾UserController的。但是,如果你已經有了UserController,你將使用自己的控制器。你必須讓它RESTFul。看看9.1.5.1 Extending the RestfulController super class

也嘗試創建urlmapping你的控制器manaully。

+0

那麼文檔是不是真的創造呢?如果我希望它是自動的,可以選擇通過REST或通過瀏覽器訪問域名? – John 2015-03-19 12:46:25

+0

我用2個不同的控制器做到了。一個用於REST,另一個用於Web。我爲每個控制器創建了映射。如果你已經有一個用於Web的UserController,嘗試將其重命名爲UserWebController併爲其創建URL映射。我認爲Grails嘗試使用UserController作爲RESTful,但它不是RESTful或是它? 我認爲grails需要RESTful Controller來使你的域可用,如果你已經沒有,那麼grails會爲你創建一個或者使用一些默認的RESTful控制器。但是你已經有一個UserController。 – CyberAleks 2015-03-19 13:15:02

+0

看看Grails RestFulController。它是RestFulController的模板。 Ctrl + Shift + T並在編輯器中輸入RestFulController。 – CyberAleks 2015-03-19 13:22:12