Раньше я считал, что мое приложение лучше на чистом node.js, но был ОЧЕНЬ счастлив после установки Express. Я не могу представить себе архитектуру веб-сервиса node SPA / RESTful без выражения Express.
Грэм
Ответы:
193
Логика определения «неправильного» URL зависит от вашего приложения. Это может быть простая ошибка «файл не найден» или что-то еще, если вы делаете приложение RESTful. Как только вы это поняли, отправить перенаправление так же просто, как:
response.writeHead(302,{'Location':'your/404/path.html'//add other headers here...});
response.end();
Только в экспресс. Не в собственном приложении node.js.
Сергей Яроцкий
@TarunG Спасибо за комментарий, если вы посмотрите историю редактирования вопроса, вы увидите, что это не всегда было так ясно.
Даниэль В. Кромптон
2
В моем случае res.redirect ('/ login') просто отправляет содержимое login.html в ответ на сделанный вызов ajax. Как мне лучше открыть страницу?
Tarun
Старый пост, но, возможно, вы ищете что-то вроде res.direct (' localhost: 5000 / login' ), особенно если вы используете свой экспресс-сервер на другом порту, чем ваш интерфейс, как и я.
jboxxx
18
Чтобы указать отсутствующий файл / ресурс и обслужить страницу 404, вам не нужно перенаправлять. В том же запросе вы должны сгенерировать ответ с кодом состояния, установленным на 404, и содержимым вашей HTML-страницы 404 в качестве тела ответа. Вот пример кода, демонстрирующий это в Node.js.
Я использовал оператор switch со значением по умолчанию 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);
Вероятно, это Expressфрагмент кода, который OP запрашивает чистый node.jsкод,
Рефаэль Акерманн,
Это не экспресс-код. Это похоже на ванильный код узла, за исключением thisчасти. В NodeJS вы пишете обработчик, который принимает два параметра, (request, response)и все эти вызовы в ответе относятся к responseобъекту.
AlexChaffee
1
Вы должны использовать следующий код:
response.writeHead(302,{'Location':'/view/index.html'// This is your url which you want});
response.end();
Ответы:
Логика определения «неправильного» URL зависит от вашего приложения. Это может быть простая ошибка «файл не найден» или что-то еще, если вы делаете приложение RESTful. Как только вы это поняли, отправить перенаправление так же просто, как:
источник
Location: /
и он перенаправит вас в корневую папку.'Location': '/path/to/my/servers/content'
Можно использовать:
источник
Чтобы указать отсутствующий файл / ресурс и обслужить страницу 404, вам не нужно перенаправлять. В том же запросе вы должны сгенерировать ответ с кодом состояния, установленным на 404, и содержимым вашей HTML-страницы 404 в качестве тела ответа. Вот пример кода, демонстрирующий это в Node.js.
источник
404 с содержимым / телом
Перенаправить на Http s
Просто подумайте, где вы это используете (например, только для HTTP-запроса), чтобы не получить бесконечные перенаправления ;-)
источник
Я использовал оператор switch со значением по умолчанию 404:
источник
Попробуй это:
источник
Express
фрагмент кода, который OP запрашивает чистыйnode.js
код,this
части. В NodeJS вы пишете обработчик, который принимает два параметра,(request, response)
и все эти вызовы в ответе относятся кresponse
объекту.Вы должны использовать следующий код:
источник
Используйте следующий код, который отлично работает в Native Nodejs
источник