Давайте теперь будем выдавать разное содержимое при обращении к разным URL:
http.createServer((request, response) => {
if (request.url != '/favicon.ico') {
if (request.url == '/page1') {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('1');
response.end();
}
if (request.url == '/page2') {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('2');
response.end();
}
if (request.url == '/page3') {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('3');
response.end();
}
}
}).listen(3000);
Очевидно, что часть кода у нас дублируется. Давайте его упростим:
http.createServer((request, response) => {
if (request.url != '/favicon.ico') {
let text;
if (request.url == '/page1') {
text = '1';
}
if (request.url == '/page2') {
text = '2';
}
if (request.url == '/page3') {
text = '3';
}
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(text);
response.end();
}
}).listen(3000);
Как вы видите, у нас есть три адреса, доступных
для запроса: /page1
, /page2
и /page3
. Давайте сделаем так, чтобы
при обращении к любому другому адресу выдавалось
сообщение о том, что страница не найдена:
http.createServer((request, response) => {
if (request.url != '/favicon.ico') {
let text;
if (request.url == '/page1') {
text = '1';
}
else if (request.url == '/page2') {
text = '2';
}
else if (request.url == '/page3') {
text = '3';
} else {
text = 'page not found';
}
response.writeHead(200, {'Content-Type': 'text/html'});
response.end();
}
}).listen(3000);
Чтобы браузер и поисковые системы правильно
обрабатывали отсутствие страницы, мы должны
для существующей страницы отдавать статус
200
, а для не существующей - 404
.
Давайте сделаем это:
http.createServer((request, response) => {
if (request.url != '/favicon.ico') {
let text;
let status;
if (request.url == '/page1') {
text = '1';
status = 200;
}
else if (request.url == '/page2') {
text = '2';
status = 200;
}
else if (request.url == '/page3') {
text = '3';
status = 200;
} else {
text = 'page not found';
status = 404;
}
response.writeHead(status, {'Content-Type': 'text/html'});
response.end();
}
}).listen(3000);
Можно упростить код следующим образом:
http.createServer((request, response) => {
if (request.url != '/favicon.ico') {
let text;
let status = 200;
if (request.url == '/page1') {
text = '1';
}
else if (request.url == '/page2') {
text = '2';
}
else if (request.url == '/page3') {
text = '3';
} else {
text = 'page not found';
status = 404;
}
response.writeHead(status, {'Content-Type': 'text/html'});
response.end();
}
}).listen(3000);
Перепишите приведенный код через оператор
switch-case
.
Дан объект с URL-лами и соответствующими им текстами страниц:
let obj = {
'/page1': '1',
'/page2': '2',
'/page3': '3',
}
Сделайте сервер на основе этого объекта.
При запросе существующего в объекте адреса
отдавайте соответствующий текст, а при запросе
отсутствующего - сообщение об ошибке и статус
404
.