默認情況下,Grails是否支持'/ articles/1/comments/5'等Restful嵌套URL?如果沒有,那是否有插件?Grails是否支持Restful嵌套的URL?
4
A
回答
4
如果你註定的Grails的較舊版本(例如< 2.3),以及可用的插件不工作了,你可以使用named URL mappings產生有效寧靜的映射。
下面是我的一個項目的例子 - 我已經遺漏了一些細節,但希望這可以讓你開始如果你決定嘗試這種方法。
在你UrlMappings.groovy
/** 1. Mappings can handle multiple actions depending on HTTP
method like Rest. Names are a little clunky, like this would
be more appropriate as "resource" vs "showResource" but we didn't want
potential naming conflict in future release
2. TODO: DRY constraints - make constraints global
3. make sure controllers have proper actions defined
*/
/** RESTFUL mapping for single resource */
name listResources: "/$controller" {
action = [GET: "list", POST: "save"]
}
name createResource: "/$controller/create" {
action = [GET: "create" ]
}
name deleteResource: "/$controller/$id?/delete" {
action = [POST: "delete", DELETE: "delete"]
constraints { id(matches: /[0-9]+/) }
}
name editResource: "/$controller/$id?/edit" {
action = [GET: "edit", PUT: "update", POST: "update"]
constraints { id(matches: /[0-9]+/) }
}
name showResource: "/$controller/$id?" {
action = [GET: "show", PUT: "update", POST: "update", DELETE: "delete"]
constraints { id(matches: /[0-9]+/) }
}
/** RESTFUL mapping for CHILD with PARENT */
name listChildResources: "/$parentResource/$pid/$controller" {
action = [GET: "list", POST: "save"]
constraints { pid(matches: /[0-9]+/) }
}
name createChildResource: "/$parentResource/$pid/$controller/create" {
action = [GET: "create" ]
constraints { pid(matches: /[0-9]+/) }
}
name showChildResource: "/$parentResource/$pid/$controller/$id?" {
action = [GET: "show", PUT: "update", POST: "update", DELETE: "delete"]
constraints {
id(matches: /[0-9]+/)
pid(matches: /[0-9]+/)
}
}
name editChildResource: "/$parentResource/$pid/$controller/$id?/edit" {
action = [GET: "edit"]
constraints {
id(matches: /[0-9]+/)
pid(matches: /[0-9]+/)
}
}
確保你控制器具有操作和支持的HTTP方法定義,如
static allowedMethods = [
save: "POST",
update: ["POST", "PUT"],
delete: ["POST", "DELETE"]
]
然後使用映射像這樣(例如,假設我們已經花園和植物作爲資源)。
//show a garden
<g:link mapping="showResource" controller="garden"
id="${gardenInstance.id}">${gardenInstance.name}</g:link>
//create a plant for garden
<g:link mapping="createChildResource" controller="plant"
params="[parentResource: 'garden', pid: gardenInstance.id]">Add Plant</g:link>
//show list of plants within a garden
<g:link mapping="listChildResources" controller="plant"
params="[parentResource: 'garden', pid: gardenInstance.id]">List plants for Garden</g:link>
這裏顯示它是相當詳細的,但你可以把所有這一切都放到TagLib中,並有類似的東西。
<g:restShow resource="garden"
id="${gardenInstance.id}">${gardenInstance.name}</g:restShow>
<g:restCreate" resource="plant"
parent="${gardenInstance}">Add Plant</g:restCreate>
6
相關問題
- 1. ngRouter是否支持「嵌套」解決?
- 2. Hibernate是否支持Oracle嵌套表?
- 3. Hibernate是否支持嵌套事務?
- 4. nanoc是否支持嵌套部分?
- 5. java是否支持嵌套方法?
- 6. Crate.io是否支持嵌套文檔
- 7. Jinja2是否支持嵌套if語句?
- 8. MariaDB是否支持嵌套事務?
- 9. Apache Camel是否支持嵌套路由?
- 10. Grails是否支持分片?
- 11. jsoup是否支持restful/rest請求
- 12. 新版本的Cassandra(3.11.0)是否支持嵌套的JSON對象?
- 13. 呃數據是否真的支持嵌套的網址?
- 14. Do Swig的宏是否支持調用嵌套宏動態?
- 15. 收集是否支持指標的任意嵌套?
- 16. 是否支持播放框架嵌套的路線如鐵軌?
- 17. Nancy.Testing是否支持嵌套的Razor視圖?
- 18. Hibernate的Criteria API是否仍然不支持嵌套關係
- 19. 是否有支持嵌套組的Spring Security DefaultLdapAuthoritiesPopulator實現?
- 20. C#4的協方差是否支持泛型嵌套?
- 21. 嵌套數組不支持
- 22. DynamoDB嵌套查詢支持
- 23. 嵌套事務不支持
- 24. AVPlayer是否支持iOS中的webm URL?
- 25. django是否支持hashbang的URL?
- 26. SQL Server 2008標準版是否支持嵌套事務?
- 27. MATLAB是否支持嵌套變量作用域?
- 28. 通配符證書是否支持嵌套子域?
- 29. C#是否支持「嵌套」過程產生一個IEnumerable?
- 30. 慶典是否支持做嵌套在讀取循環中讀?
這工作!非常感謝你。 – syllepsa