=====web-server с html страницами=====
Со стрелочными функциями ответ брацзеру можно переавать с версткой, обычная функция ее не преобразует и выводит ответ вместе с тегами
const http = require('http');
const fs = require('fs');
const path = require('path');
/**
* calback функция - обработчик запросов ,
* request - запрос
* response - ответ
*/
const server = http.createServer((request, response) => {
console.log(request.url);//вернет в консоль url - http://127.0.0.1:3000/adda
if(request.method === 'GET'){
/**
* Вернуть заголовок браузеру
* первый параметр заголовок
* второй параметр заголовок
*/
response.writeHead(200, {
'Content-type': 'text/html; charset=utf-8'
});
//Главная страница шаблон index.html
if(request.url === '/'){
fs.readFile(//Читаем файл
path.join(__dirname, 'template', 'index.html'),//Путь к шаблону
'utf-8',
(err, data) => {//calback функция обрабатывае даннве из шаблона
if(err){
throw new Error(err);
}
response.end(data);
}
);
}//страница about шаблон about.html
else if(request.url === '/about'){
fs.readFile(//Читаем файл
path.join(__dirname, 'template', 'about.html'),//Путь к шаблону
'utf-8',//Кодировка
(err, data) => {//calback функция обрабатывае даннве из шаблона
if(err){
throw new Error(err);
}
response.end(data);//Отдаем страницу браузеру
}
);
}
}
else if(request.method === 'POST'){//если пришел post запрос
const body = [];//Массив куда будет складывать ответ
request.on('data', data => {//Событие обрабатывает данные из формы
body.push(Buffer.from(data)); //пушим в массив получаемый буфер,
// это необходимо так как сообщение получем не все сразу а частями
});//Слушаем событие data - буфер
request.on('end', () => {//Данные от браузера полность приняты
const message = body.toString().split('=')[1];
response.writeHead(200, {//Отдадим заголовок в нужной кодировке
'Content-type': 'text/html; charset=utf-8'
});
//Вернем ответ об удачной отправке формы
response.end(`
ваше сообение принято: ${message}
`);
});
}
});
/**
* Установить прослушку на 3000 порт
*/
server.listen(3000, () => {
console.log('server start on port 3000');
});