Итак, добро пожаловать в мою первую статью, мы собираемся создать веб-сервер с помощью NodeJS. Я предполагаю, что вы уже знаете, что такое веб-сервер или запрос/ответ.

Если вы не знаете, что это такое, вот простое объяснение.

Веб-сервер хранит и доставляет содержимое веб-сайта, например текст, изображения, видео и данные приложений, клиентам, которые его запрашивают. Наиболее распространенным типом клиента является программа веб-браузера, которая запрашивает данные с вашего веб-сайта, когда пользователь щелкает ссылку или загружает документ на странице, отображаемой в браузере.¹

Мы используем модуль http от NodeJS для нашего общения на уровне API. Мы вызываем наш модуль, используя ключевое слово «require». Как ниже в первой строке.

const http = require("http");
// constants
const hostname = "localhost";
const port = 8080;
const requestListener = function (request, response) {
var url = request.url; // get the url from the request
response.end();
};
// create the server
const server = http.createServer(requestListener);
server.listen(port, hostname, () => {
// start the server
console.log(`Server running at http://${hostname}:${port}/`);
});

Этот блок кода в основном помогает вам запустить ваш самый первый и базовый веб-сервер на вашем хосте и порту. Вы можете изменить эти статические переменные, если хотите.

if (url === "/about") {
 response.statusCode = 200;
 response.write("Welcome to the about page!");
} else {
 response.statusCode = 404;
 response.statusMessage = "Page not found!"
}

Теперь я собираюсь добавить этот блок кода внутрь функции requestListener. Эти операторы if-else принимают URL-адрес и помогают нам ответить на наш запрос.

Теперь давайте посмотрим на запись наших запросов в другой файл. Для этого мы будем использовать модуль «fs» от NodeJS. Этот модуль в основном помогает нам открывать, писать, сохранять и закрывать файл.

Сначала я открыл новый файл с именем «log4server.js». Затем вам нужно снова импортировать наш модуль с ключевым словом «require».

const fs = require("fs");
exports.logFile = (request, response, url) => {
var date = new Date();
let logger =
 date +
 ` => ${request.method}: ${url}, status: ${response.statusCode} ` +
 "\n" +
 JSON.stringify(request.headers) +
 "\n" +
 "---------------------" +
 "\n";
console.log(logger);
fs.appendFile("logger.txt", logger, "utf8", (err) => {
  if (err) {
   console.log("Error while appending file : ", err);
   throw err;
  } else {
   console.log("The file has been saved!");
  }
 });
};

Эта функция помогает нам создать наш журнал с нашим запросом и ответом, а затем в конце функции он записывает журнал в текстовый файл с именем «logger.txt». Но, как вы знаете, мы написали эту функцию в другом классе. Поэтому нам нужно импортировать его в наш файл «server.js».

const logger = require("./log4server.js");
logger.logFile(request, response, url);

Мы можем использовать функцию logFile таким образом. Мы передаем параметры внутри функции, импортированной из нашего файла «log4server.js».

Так что это был конец, я надеюсь, что это поможет.

[1]: https://www.nginx.com/resources/glossary/веб-сервер/