Router - Heavyblade/cirrus GitHub Wiki

Las rutas son el intermediario entre las peticiones HTTP y la lógica de negocio que se encuentra en los controlladores de la aplicacción, añdiendo rutas al router de wApp crearas la vias entre las peticiones y tu código:

	wApp.router.addRoutes({"GET /users": "usersController#index"})

con la anterior sentencia estas enviando las peticiones GET dirigidas al path "/users" hacia el controlador usersController y la acción "index", igualmente puedes añadir multiples rutas al mismo tiempo:

	wApp.router.addRoutes({"GET /users": "usersController#index", "GET /users/new": "usersController#new"})
parametros:

Puedes definir parametros dentro de tus urls con el fin de darles un enfoque más REST, de tal forma que sean más limpias y tengan sentido al leerlas, para ello dentro de al URL puedes indicar cuales componentes son parametros añadiendo dos puntos (":") antes de la palabra, puedes añadir tantos parametros como desees.

	wApp.router.addRoutes({"GET /users/:id": "usersController#show"})

	// para un request "/users/20" el "20" será añadido a la lista global de parametros, a los que puedes acceder a traves de la variable params en los controladores.

Adicional a esta definición Cirrus.js parseara cualquier parametro extra añadido al final de la URL, siguiendo el formato definido para las Query Strings (URL?param1=value1&param2=value2) y los añadirá a la lista global de parametros.

Orden:

Cirrus.js hace el match de rutas top-down, lo que quiere decir que si hay un request que hace match con 2 rutas cirrus tomara la primera.

Soporte REST:

Si deseas crear la interface para un recurso (ususarios, facturas, articulos, categorias, etc) y quieres evitarte construir las rutas para listarlos, crearlos, mostrar espeficos, editarlos, actualizarlos, etc. Cirrus.js te permite declarar recursos y generarar automáticamente las 7 rutas REST necesarias.

	wApp.router.addRoutes({"resource users": "users"})

esta declaración añadira automáticamente las siguientes rutas a tu aplicación:

  • GET /users => "usersController#index"
  • GET /users/new => "usersControlerr#new"
  • POST /users => "usersController#create"
  • GET /users/:id => "usersCotroller#show"
  • GET /users/:id/edit => "usersController#edit"
  • PUT /users/:id => "usersController#update"
  • DELETE /users/:id => "usersController#delete"

Peticiones con datos en el body

Puedes realizar peticiones POST o PUT que incluyan datos como parte del la petición en el body en formato URL encoded standar, estos datos serán parseados y podrás acceder a ellos desde wApp.params.body

Datos array en peticiones:

Si es necesario que puedas recibir en un determinado parámetro como un array ahora es posible simplemente añadiendo un “[]” al final del nombre del parámetro deseado, ejemplo: en la petición “http://localhost:4000/hello?valor[]=1&valor[]=2&valor[]=3” en el controlador el params.valor contendrá un array con los valores [1,2,3].

Detección del tipo de dato y entrega al proceso o búsqueda.

Cirrus.js automáticamente intentará detectar el tipo de dato que viene en los parametros y aplicará la conversión correspondiente antes de realizar la asignación al proceso o búsqueda:

string Tipo detectado conversion
"12345" integer 12345
"123,45" float 123.45
"123.45" float 123.45
"112,890.90" float 112890.90
"112.890,90" float 112890.90
"true" Boolean true
"01/12/2012" Date new Date(2012, 12, 1)
"01-12-2012" Date new Date(2012, 12, 1)
"1/12/12" Date new Date(2012, 12, 1)
"1-12-12" Date new Date(2012, 12, 1)
"2012/12/01" Date new Date(2012, 12, 1)
"5/25/2014 9:05:34 PM" DateTime new Date(2014, 4, 25, 21, 5, 34)
"Mon, 26 May 2014 02:05:34 GMT" DateTime new Date(2014, 4, 26, 2, 5, 34)
""2014-05-26T02:25:07.850Z"" DateTime new Date(2014, 4, 26, 2, 25, 7)