Со стрелочными функциями ответ брацзеру можно переавать с версткой, обычная функция ее не преобразует и выводит ответ вместе с тегами
const http = require('http'); /** * 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' }); response.end(//вернуть форму браузеру `<h1>Form</h1> <form method="post" action="/"> <input type="text" name="title"> <button type="submit">Send</button> </form> `); } 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(` <h3>ваше сообение принято: ${message}</h3> `); }); } }); /** * Установить прослушку на 3000 порт */ server.listen(3000, () => { console.log('server start on port 3000'); });