plicación de griales de INMEDIATO: SECAR UrlMapping
Digamos que tenemos una aplicación web de Grails que expone varios recursos.
tags urls usuariosLa aplicación tiene una interfaz web clásica con la que los usuarios interactúan y alguna administración. Queremos exponer los recursos de la aplicación a los clientes a través de una API RESTful y no queremos que esa parte de la aplicación desordene los controladores y el código que ya tenemos. Entonces se nos ocurrió lo siguiente:
Si la interfaz web ofrecehost/app_path/url/[list|show|create]
queremos que la API REST esté en/host/app_path/rest/url
.
Así que terminamos con el siguiente archivo 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')
}
}
El problema es que esto no es exactamente lo más SECO aquí. Empeora a medida que agregamos más recursos, como etiquetas. Se traducirían a otros tres bloques de código muy similares ...
Las funciones que no son crud serán cosas como buscar con criterios específicos y tales ...
Intentamos generar los cierres de mapeo con un bucle, pero sin éxito. ¿Estamos completamente en el camino equivocado aquí?