Создание вашего первого самореализованного базового HTTP-сервера (с маршрутизацией) в Node.js

Веб-сервер — это система, которая обрабатывает запросы через HTTP, основной сетевой протокол, используемый для распространения информации в Интернете или локально. Вы можете использовать http-модуль Node.js, чтобы запросить информацию из Интернета или даже создать свой собственный http-сервер, чтобы отвечать на чьи ответы, обслуживать файлы и т. Д.

В этой статье вы узнаете, как реализовать самописный http-сервер, используя модуль http и модуль httpdispatcher для добавления функциональности маршрутизации.

Реализация

Для начала создайте JS-файл с именем server.js, он будет содержать следующий код для создания и обработки базового http-сервера:

Замечания: модуль http уже встроен в node.js, поэтому вам не нужно загружать какой-либо модуль. Если только нет.

// require the http module of node.js
var http = require('http');
// define the port of access for your server
const PORT = 8080;
// We need a function which handles requests and send response
function handleRequest(request, response){
response.end('Server working properly. Requested URL : ' + request.url);
}
// Create a server
var myFirstServer = http.createServer(handleRequest);
// Start the server !
myFirstServer.listen(PORT, function(){
// Callback triggered when server is successfully listening. Hurray!
console.log("Server listening on: http://localhost:%s", PORT);
});

Метод createServer возвращает новый экземпляр http.Server. Чтобы создать наш сервер, вам нужно указать порт и использовать метод listen, в результате чего сервер будет принимать соединения с указанным дескриптором.

Чтобы запустить сервер, используйте следующую команду в командной строке Node.js:

node server.js

Теперь откройте ваш любимый браузер и перейдите к HTTP: // локальный: 8080, Вы должны получить следующий ответ (и он должен измениться в соответствии с указанным URL):

HTTP-сервер Node.js

Как видите, сервер отвечает на все URL-адреса.

Обратите внимание, что модуль http очень прост, создание сложного веб-приложения с использованием предыдущего примера потребовало бы много времени для правильной реализации, поэтому вы должны использовать предыдущий пример для простых вещей, таких как служебные файлы или для целей обучения. Если вы работаете со сложными проектами, вы должны использовать для этого фреймворк, т.е. экспресс, хапи, КоА или же restify. В этой статье вы узнаете, как создать базовую систему маршрутизации, используя httpdispatcher модуль.

Добавление функциональности маршрутизации

Как упоминалось ранее, ваш сервер на данный момент возвращает ответ на любой URL-адрес, поэтому, чтобы добавить некоторые «реальные» функции, ваш сервер должен отвечать на определенные URL-адреса.

Чтобы справиться с этим в этом базовом примере, нам нужно использовать диспетчер, он будет работать как своего рода маршрутизатор, который позволит вам по-разному реагировать на определенные URL-адреса. httpdispatcher Простой класс позволяет разработчику иметь четкий диспетчер для динамических страниц и статических ресурсов.

Чтобы добавить диспетчер http в свой проект, добавьте модуль, выполнив следующую команду в командной строке Node.js:

npm install httpdispatcher

Теперь давайте добавим несколько маршрутов, используя диспетчер в примере:

// require the http module of node.js
var http = require('http');
// require the dispatcher module
var dispatcher = require('httpdispatcher');
// define the port of access for your server
const PORT = 8080;
// We need a function which handles requests and send response
function handleRequest(request, response){
try {
// log the request on console
console.log(request.url);
// Dispatch
dispatcher.dispatch(request, response);
} catch(err) {
console.log(err);
}
}
// Create a server
var myFirstServer = http.createServer(handleRequest);
// add some routes
//A sample GET request
dispatcher.onGet("/", function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('Hey, this is the homepage of your server');
});
dispatcher.onGet("/welcome", function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Welcome homepage');
});
dispatcher.onError(function(req, res) {
res.writeHead(404);
res.end("Error, the URL doesn't exist");
});
// Start the server !
myFirstServer.listen(PORT, function(){
// Callback triggered when server is successfully listening. Hurray!
console.log("Server listening on: http://localhost:%s", PORT);
});

Модуль httpdispatcher упрощает создание маршрутов и ответов для различных форматов запросов (POST, GET), и, как и было обещано, теперь у вас есть функциональный http-сервер, созданный с помощью Node.js, чтобы запустить его:

node server.js

Если вы перейдете к HTTP: // локальный: 8080 а также HTTP: // локальный: 8080 / Добро пожаловать вы увидите соответственно ответ, приведенный в примере. Если вы пытаетесь получить доступ к несуществующему URL, т.е. HTTP: // локальный: 8080 / это-оленья кожа, существует вы получите 404 ответ «Ошибка, URL не существует».

Ссылка на основную публикацию
Adblock
detector