2009-06-05 12 views
7

Digamos que tenemos una aplicación web Grails que expone varios recursos.Aplicación GRATUITA de grial: Secando UrlMapping

  • etiquetas
  • urls
  • usuarios

La aplicación tiene una interfaz web clásico que los usuarios interactúan con y algunos 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. Así que se nos ocurrió lo siguiente:

Si la interfaz web ofrece host/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:

El problema es que esto no es exactamente lo más SECO aquí. Se pone peor a medida que agregamos más recursos como etiquetas. Ellos se traducen a otro tres bloques de código muy similar ...

Las funciones no crud serán cosas como la búsqueda con criterios específicos y tal ...

Tratamos de generar los cierres de mapeo con un bucle , pero sin éxito. ¿Estamos completamente equivocados aquí?

Respuesta

7

Yo recomendaría el siguiente mapeo:

"/rest/url/$id?"(resource:"urlRest") 

A continuación se muestra el método HTTP a la cartografía de acción que esto crearía para la urlRestController:

GET   show 
PUT   update 
POST  save 
DELETE  delete 

veo por qué es posible que desee asignar/rest/url POST para guardar y/rest/url/id PUT para actualizar, pero eso va en contra del significado de esos verbos. Un PUT debe ser la única forma de agregar una nueva url y POST la única forma de actualizar una url. Hacerlo de la manera que ha establecido funcionaría y podría ser la mejor manera si su restricción es mantener intacto su código de controlador actual. Sin embargo, supongo que su controlador podría estar codificado para manejar las asignaciones predeterminadas sin problemas (actualizar/eliminar dar error si no hay id, mostrar redireccionamientos a la lista si no hay id, etc.).

+1

Ahh, lo de PUT/POST: D – kungfoo

Cuestiones relacionadas