Rutas en Node

Rutas y redirección con NodeJS

Rutas


La recarga o la redirección de rutas en un proyecto creado en  Angular y NodeJS puede devolver errores en un entorno de producción. Para ello existen distintas formas que permiten acceder a las rutas del frontend y también tener acceso a la api del proyecto. Una de estas formas es mediante urls amigables.  Para crear estas urls amigables es necesario modificar el módulo app del backend añadiéndole una ruta estática y un método get que contiene un callback, situándose al final de las rutas, evitando interferir en las rutas que acceden a la api.

ruta estática:

  1. app.use("/",express.static("client",{redirect : false}));

método get:

  1. app.get('*',function(req,res,next){
  2. res.sendFile(path.resolve('client/index.html'));
  3. });

La ruta estática carga el contenido de client y con la propiedad redirect evitamos ningún tipo de redirección. El método get es necesario incluirlo al final descartando que no coincide con ninguna de las anteriores, así pues el código de abajo muestra un ejemplo de la sección de rutas de un proyecto:

  1. //carga de rutas
  2. var users = require("./routes/users");
  3. var roles = require("./routes/roles");
  4. //rutas
  5. app.use("/",express.static("client",{redirect : false}));
  6. app.use("/api",users);
  7. app.use("/api",roles);
  8. app.get('*',function(req,res,next){
  9. res.sendFile(path.resolve('client/index.html'));
  10. });

De esta forma se mantiene intacto el acceso a las rutas anteriores al método get y mediante el parámetro asterisco se indica que cualquier otra ruta que no se encuentre incluida antes, pasará por el callback y cargará las rutas correspondientes permitiendo recargar la página sin devolver ningún tipo de error. Por tanto, en el ejemplo de arriba, cualquier ruta que no venga precedida de api seguida de un usuario o seguida de un rol pasará por el callback del método get resolviendo la ruta.

Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso