Solía creer que mi aplicación era mejor en node.js puro, pero he estado MUY feliz después de instalar express. No puedo imaginar una arquitectura de servicio web de nodo SPA / RESTful sin Express ahora.
Graham
Respuestas:
193
La lógica para determinar una URL "incorrecta" es específica de su aplicación. Podría ser un simple error de archivo no encontrado o algo más si está haciendo una aplicación RESTful. Una vez que lo haya descubierto, enviar una redirección es tan simple como:
response.writeHead(302,{'Location':'your/404/path.html'//add other headers here...});
response.end();
Solo en expreso. No en la aplicación nativa de node.js.
Sergey Yarotskiy
@TarunG Gracias por el comentario, si miras el historial de edición de la pregunta, ves que esto no siempre fue tan claro.
Daniël W. Crompton
2
En mi caso, res.redirect ('/ login') simplemente envía el contenido de login.html en la respuesta de la llamada ajax realizada. ¿Cómo prefiero abrir la página?
Tarun
Publicación anterior, pero tal vez esté buscando algo como res.direct (' localhost: 5000 / login' ), especialmente si está ejecutando su servidor expreso en un puerto diferente al de su interfaz como yo.
jboxxx
18
Para indicar un archivo / recurso faltante y servir una página 404, no es necesario que redirija. En la misma solicitud, debe generar la respuesta con el código de estado establecido en 404 y el contenido de su página HTML 404 como cuerpo de respuesta. Aquí está el código de muestra para demostrar esto en Node.js.
Usé una declaración de cambio, con la predeterminada como 404:
var fs = require("fs");var http = require("http");function send404Response (response){
response.writeHead(404,{"Content-Type":"text/html"});
fs.createReadStream("./path/to/404.html").pipe(response);}function onRequest (request, response){switch(request.url){case"/page1"://statementsbreak;case"/page2"://statementsbreak;default://if no 'match' is found
send404Response(response);break;}}
http.createServer(onRequest).listen(8080);
Este es probablemente un Expressfragmento de código que OP pidió node.jscódigo puro
Refael Ackermann
No es un código Express. Esto parece un código de nodo vainilla excepto por la thisparte. En NodeJS, escribe un controlador que acepta dos parámetros (request, response)y todas esas llamadas en la respuesta están en el responseobjeto.
AlexChaffee
1
Tienes que usar el siguiente código:
response.writeHead(302,{'Location':'/view/index.html'// This is your url which you want});
response.end();
Respuestas:
La lógica para determinar una URL "incorrecta" es específica de su aplicación. Podría ser un simple error de archivo no encontrado o algo más si está haciendo una aplicación RESTful. Una vez que lo haya descubierto, enviar una redirección es tan simple como:
fuente
Location: /
y te redirigirá a la carpeta raíz.'Location': '/path/to/my/servers/content'
Es posible utilizar:
fuente
Para indicar un archivo / recurso faltante y servir una página 404, no es necesario que redirija. En la misma solicitud, debe generar la respuesta con el código de estado establecido en 404 y el contenido de su página HTML 404 como cuerpo de respuesta. Aquí está el código de muestra para demostrar esto en Node.js.
fuente
404 con contenido / cuerpo
Redirigir a Http s
Solo considere dónde usa esto (por ejemplo, solo para solicitudes http), para que no obtenga redireccionamientos infinitos ;-)
fuente
Usé una declaración de cambio, con la predeterminada como 404:
fuente
Prueba esto:
fuente
Express
fragmento de código que OP pidiónode.js
código purothis
parte. En NodeJS, escribe un controlador que acepta dos parámetros(request, response)
y todas esas llamadas en la respuesta están en elresponse
objeto.Tienes que usar el siguiente código:
fuente
Use el siguiente código, esto funciona bien en Native Nodejs
fuente