-
Notifications
You must be signed in to change notification settings - Fork 11
Router
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"})
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¶m2=value2) y los añadirá a la lista global de parametros.
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.
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"
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
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].
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) |