いくつかのリソースを公開するgrailsWebアプリケーションがあるとしましょう。
- タグ
- URL
- ユーザー
このアプリケーションには、ユーザーが操作する従来のWebインターフェイスといくつかの管理機能があります。RESTful APIを介してアプリケーションからクライアントにリソースを公開したいのですが、アプリのその部分が既存のコントローラーとコードを乱雑にしたくないのです。そこで、次のことを思いつきました。
Webインターフェースが提供host/app_path/url/[list|show|create]
する場合は、RESTAPIをに設定する必要があります/host/app_path/rest/url
。
そのため、次のUrlMappingsファイルが作成されました。
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
}
/* adding new urls and listing them */
"/rest/url"{
controller = "urlRest"
action = [POST: "save", PUT: "save", GET: "list", DELETE:"error"]
}
/* accessing a single url */
"/rest/url/$id"{
controller = "urlRest"
action = [POST: "update", PUT: "update", GET: "show", DELETE: "delete"]
}
/* non-crud stuff on urls */
"/rest/url/$action?/$id?"{
controller = "urlRest"
}
"/"(view:"/index")
"500"(view:'/error')
}
}
問題は、これがここで最も乾燥したものではないということです。タグなどのリソースを追加すると、さらに悪化します。それらは、非常に類似したコードのさらに別の3つのブロックに変換されます...
非クラッド関数は、特定の基準で検索するようなものになります...
ループを使用してマッピングクロージャを生成しようとしましたが、成功しませんでした。私たちはここで完全に間違った方向に進んでいますか?