Kiedyś wierzyłem, że moja aplikacja jest lepsza w czystym node.js, ale byłem BARDZO zadowolony po zainstalowaniu Express. Nie wyobrażam sobie teraz architektury usług sieciowych SPA / RESTful w węźle bez ekspresu.
Graham
Odpowiedzi:
193
Logika określania „złego” adresu URL jest specyficzna dla Twojej aplikacji. Może to być prosty błąd „Nie znaleziono pliku” lub coś innego, jeśli robisz aplikację RESTful. Gdy już to zrozumiesz, wysłanie przekierowania jest tak proste, jak:
response.writeHead(302,{'Location':'your/404/path.html'//add other headers here...});
response.end();
Tylko ekspresowo. Nie w natywnej aplikacji node.js.
Sergey Yarotskiy
@TarunG Dzięki za komentarz, jeśli spojrzysz na historię edycji pytania, zobaczysz, że nie zawsze było to takie jasne.
Daniël W. Crompton,
2
W moim przypadku res.redirect ('/ login') po prostu wysyła zawartość login.html w odpowiedzi na wywołanie ajax. Jak raczej otworzyć stronę?
Tarun
Stary post, ale może szukasz czegoś takiego jak res.direct (' localhost: 5000 / login' ), szczególnie jeśli używasz swojego serwera ekspresowego na innym porcie niż frontend, tak jak ja.
jboxxx
18
Aby wskazać brakujący plik / zasób i udostępnić stronę 404, nie musisz przekierowywać. W tym samym żądaniu należy wygenerować odpowiedź z kodem stanu ustawionym na 404 i treścią strony 404 HTML jako treścią odpowiedzi. Oto przykładowy kod pokazujący to w Node.js.
Użyłem instrukcji switch, z wartością domyślną 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);
Prawdopodobnie jest to Expressfragment kodu OP proszony o czysty node.jskod
Refael Ackermann
To nie jest kod Express. To wygląda jak waniliowy kod węzła, z wyjątkiem thisczęści. W NodeJS piszesz program obsługi, który akceptuje dwa parametry, (request, response)a wszystkie wywołania w odpowiedzi są naresponse obiektu.
AlexChaffee
1
Musisz użyć następującego kodu:
response.writeHead(302,{'Location':'/view/index.html'// This is your url which you want});
response.end();
Odpowiedzi:
Logika określania „złego” adresu URL jest specyficzna dla Twojej aplikacji. Może to być prosty błąd „Nie znaleziono pliku” lub coś innego, jeśli robisz aplikację RESTful. Gdy już to zrozumiesz, wysłanie przekierowania jest tak proste, jak:
źródło
Location: /
a przekieruje Cię do folderu głównego.'Location': '/path/to/my/servers/content'
Możliwe jest użycie:
źródło
Aby wskazać brakujący plik / zasób i udostępnić stronę 404, nie musisz przekierowywać. W tym samym żądaniu należy wygenerować odpowiedź z kodem stanu ustawionym na 404 i treścią strony 404 HTML jako treścią odpowiedzi. Oto przykładowy kod pokazujący to w Node.js.
źródło
404 z treścią / treścią
Przekieruj do Http s
Zastanów się tylko, gdzie tego używasz (np. Tylko dla żądania http), aby nie otrzymywać niekończących się przekierowań ;-)
źródło
Użyłem instrukcji switch, z wartością domyślną 404:
źródło
Spróbuj tego:
źródło
Express
fragment kodu OP proszony o czystynode.js
kodthis
części. W NodeJS piszesz program obsługi, który akceptuje dwa parametry,(request, response)
a wszystkie wywołania w odpowiedzi są naresponse
obiektu.Musisz użyć następującego kodu:
źródło
Użyj następującego kodu, który działa dobrze w Native Nodejs
źródło