Результат проверки кода
Проверка доступна после покупки курса!
Материалы
Создайте сервер на порту 3000. Сервер должен принимать GET запросы.
Сервер должен реагировать на запрос /main - возвращая строку 'main'. Обработкой данного запроса занимается функция main.
Сервер должен реагировать на запрос /about - возвращая строку 'about'. Обработкой данного запроса занимается функция about.
Материалы доступны после покупки курса.
Материалы доступны после покупки курса.
Роутинг на Node.js
Сегодня мы будем создавать роутинг на чистой node.js без использования express. Давайте обрисуем задачу - создать сервер на node.js, который будет реагировать на GET и POST запросы и отвечать на них.
Для реализации подключим модули url, http.
const http = require('http');
const url = require('url');
Для понимания адреса, который приходит в запросе, нам нужно сделать парсинг req.url.
http.createServer(function (req, res) {
let urlParts = url.parse(req.url);
console.log(urlParts.pathname);
}).listen(3000);
Теперь зная urlParts.pathname мы можем выполнять любые действия на сервере. Давайте добавил внутрь сервера switch, который и будет реализовывать роутинг:
switch (urlParts.pathname) {
case "/":
homepage(req, res);
break;
case "/about":
about(req, res);
break;
default:
page404(req,res);
break;
}
Где homepage, about, page404 - это функции, которые будут реагировать на данные адреса.
function homepage(req, res) {
res.end("homepage");
}
function about(req, res) {
res.end("about");
}
function page404(req, res) {
res.end("404");
}
Добавим в роутен на нативной node.js возможность реагировать на тип запроса - GET, POST, а на другие запросы отвечать 404. Весь код приложения выглядит так:
const http = require('http');
const url = require('url');
http.createServer(function (req, res) {
let urlParts = url.parse(req.url);
// console.log(urlParts);
console.log('==========================');
console.log(urlParts.pathname);
console.log('==========================');
if (req.method == 'GET') {
switch (urlParts.pathname) {
case "/":
homepage(req, res);
break;
case "/about":
about(req, res);
break;
default:
page404(req,res);
break;
}
}
else if (req.method == 'POST') {
switch (urlParts.pathname) {
case "/about":
about2(req, res);
break;
default:
page404(req,res);
break;
}
}
else {
page404(req,res);
}
}).listen(3000);
console.log("Server running at http://localhost:3000/");
function homepage(req, res) {
res.end("homepage");
}
function about(req, res) {
res.end("about");
}
function about2(req, res) {
res.end("about post");
}
function page404(req, res) {
res.end("404");
}
Подведем итог, мы написали роутер на node.js, теперь наше приложение может реагировать на типы запроса и введенные адреса - т.е. скелет полноценного сервера под сайт получили. Теперь можно добавить вычитку данных на страницах из базы, и сайт готов. Данные действия будем проводить в следующем юните, а пока - внизу вас ждут Домашние задания.
Проверка доступна после покупки курса!