Hello Node.js

Создание сервера¶

Для работы с сервером и протоколом http в Node.js используется модуль http.

Чтобы создать сервер, следует вызвать метод http.createServer() :

const http = require('http'); http.createServer().listen(3000); 

Метод createServer() возвращает объект http.Server . Но чтобы сервер мог прослушивать и обрабатывать входящие подключения, у объекта сервера необходимо вызвать метод listen() , в который в качестве параметра передается номер порта, по которому запускается сервер.

Для обработки подключений в метод createServer можно передать специальную функцию:

const http = require('http'); http.createServer(function (request, response)  response.end('Hello world!'); >).listen(3000); 

Эта функция принимает два параметра:

Request¶

Параметр request позволяет получить информацию о запросе и представляет объект http.IncomingMessage . Отметим некоторые основные свойства этого объекта:

  • headers : возвращает заголовки запроса
  • method : тип запроса ( GET , POST , DELETE , PUT )
  • url : представляет запрошенный адрес

Например, определим следующий файл app.js :

 1 2 3 4 5 6 7 8 9 10 11 12 13
var http = require('http'); http.createServer(function (request, response)  console.log('Url: ' + request.url); console.log('Тип запроса: ' + request.method); console.log( 'User-Agent: ' + request.headers['user-agent'] ); console.log('Все заголовки'); console.log(request.headers); response.end(); >).listen(3000); 

Запустим его и обратимся в браузере по адресу http://localhost:3000/index.html:

3.3.png

Response¶

Параметр response управляет отправкой ответа и представляет объект http.ServerResponse . Среди его функциональности можно выделить следующие методы:

  • statusCode : устанавливает статусный код ответа
  • statusMessage : устанавливает сообщение, отправляемое вместе со статусным кодом
  • setHeader(name, value) : добавляет в ответ один заголовок
  • write : пишет в поток ответа некоторое содержимое
  • writeHead : добавляет в ответ статусный код и набор заголовков
  • end : сигнализирует серверу, что заголовки и тело ответа установлены, в итоге ответ отсылается клиента. Данный метод должен вызываться в каждом запросе.

Например, изменим файл app.js следующим образом:

const http = require('http'); http.createServer(function (request, response)  response.setHeader('UserId', 12); response.setHeader( 'Content-Type', 'text/html; charset=utf-8;' ); response.write('

hello world

'
); response.end(); >).listen(3000);

Запустим файл и обратимся в браузере к приложению:

3.4.png

Если предстоит отправить довольно большой ответ, то мы можем несколько раз вызвать метод write() , последовательно оправляя в исходящий поток каждый кусочек информации. Например, отправим код более менее полноценной веб-страницы:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
const http = require('http'); http.createServer(function (request, response)  response.setHeader('Content-Type', 'text/html'); response.write(''); response.write(''); response.write(''); response.write(''); response.write(''); response.write(''); response.write('

Привет миг

'
); response.write(''); response.end(); >).listen(3000);

Маршрутизация¶

По умолчанию Node.js не имеет встроенной системы маршрутизации. Обычно она реализуется с помощью специальных фреймворках типа Express, о котором речь пойдет в следующей главе. Однако если необходимо разграничить простейшую обработку пары-тройки маршрутов, то вполне можно использовать для этого свойство url объекта Request . Например:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const http = require('http'); http.createServer(function (request, response)  response.setHeader( 'Content-Type', 'text/html; charset=utf-8;' ); if (request.url === '/home' || request.url === '/')  response.write('

Home

'
); > else if (request.url == '/about') response.write('

About

'
); > else if (request.url == '/contact') response.write('

Contacts

'
); > else response.write('

Not found

'
); > response.end(); >).listen(3000);

В данном случае обрабатываются три маршрута. Если идет обрашение к корню сайта или по адресу localhost:3000/home , то пользователю выводится строка Home . Ели обращение идет по адресу localhost:3000/about , то пользователю в браузере отображается строка About и так далее. Если запрошенный адрес не соответствует ни одному маршруту, то выводится заговлок Not Found .

3.7.png

Однако опять же отмечу, что рамках специальных фреймворков, которые работают поверх Node.js, например, Express, есть более удобные способы для обработки маршрутов, которые нередко и используются.

Переадресация¶

Переадресация предполагает отправку статусного кода 301 (постоянная переадресация) или 302 (временная переадресация) и заголовка Location , который указывает на новый адрес. Например, выполним переадресацию с адреса localhost:3000/ на адрес localhost:3000/newpage

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
const http = require('http'); http.createServer(function (request, response)  response.setHeader( 'Content-Type', 'text/html; charset=utf-8;' ); if (request.url === '/')  response.statusCode = 302; // временная переадресация // на адрес localhost:3000/newpage response.setHeader('Location', '/newpage'); > else if (request.url == '/newpage')  response.write('New address'); > else  response.write('Not Found'); response.statusCode = 404; // адрес не найден > response.end(); >).listen(3000); 

Источник

Сервер

Для работы с сервером и протоколом http в Node.js используется модуль http.

Чтобы создать сервер, следует вызвать метод http.createServer() :

const http = require("http"); http.createServer().listen(3000);

Метод createServer() возвращает объект http.Server . Но чтобы сервер мог прослушивать и обрабатывать входящие подключения, у объекта сервера необходимо вызвать метод listen() , в который в качестве параметра передается номер порта, по которому запускается сервер.

Для обработки подключений в метод createServer можно передать специальную функцию:

const http = require("http"); http.createServer(function(request, response)< response.end("Hello world!"); >).listen(3000);

Эта функция принимает два параметра:

Request

Параметр request позволяет получить информацию о запросе и представляет объект http.IncomingMessage . Отметим некоторые основные свойства этого объекта:

  • headers : возвращает заголовки запроса
  • method : тип запроса (GET, POST, DELETE, PUT)
  • url : представляет запрошенный адрес

Например, определим следующий файл app.js:

var http = require("http"); http.createServer(function(request, response)< console.log("Url: " + request.url); console.log("Тип запроса: " + request.method); console.log("User-Agent: " + request.headers["user-agent"]); console.log("Все заголовки"); console.log(request.headers); response.end(); >).listen(3000);

Запустим его и обратимся в браузере по адресу http://localhost:3000/index.html :

Обработка запроса в Node.js

Response

Параметр response управляет отправкой ответа и представляет объект http.ServerResponse . Среди его функциональности можно выделить следующие методы:

  • statusCode : устанавливает статусный код ответа
  • statusMessage : устанавливает сообщение, отправляемое вместе со статусным кодом
  • setHeader(name, value) : добавляет в ответ один заголовок
  • write : пишет в поток ответа некоторое содержимое
  • writeHead : добавляет в ответ статусный код и набор заголовков
  • end : сигнализирует серверу, что заголовки и тело ответа установлены, в итоге ответ отсылается клиента. Данный метод должен вызываться в каждом запросе.

Например, изменим файл app.js следующим образом:

const http = require("http"); http.createServer(function(request, response)< response.setHeader("UserId", 12); response.setHeader("Content-Type", "text/html; charset=utf-8;"); response.write("

hello world

"); response.end(); >).listen(3000);

Запустим файл и обратимся в браузере к приложению:

Отправка ответа в Node.js

Если предстоит отправить довольно большой ответ, то мы можем несколько раз вызвать метод write() , последовательно оправляя в исходящий поток каждый кусочек информации. Например, отправим код более менее полноценной веб-страницы:

const http = require("http"); http.createServer(function(request, response)< response.setHeader("Content-Type", "text/html"); response.write(""); response.write(""); response.write(""); response.write(""); response.write(""); response.write(""); response.write("

Привет миг

"); response.write(""); response.end(); >).listen(3000);

Маршрутизация

По умолчанию Node.js не имеет встроенной системы маршрутизации. Обычно она реализуется с помощью специальных фреймворках типа Express, о котором речь пойдет в следующей главе. Однако если необходимо разграничить простейшую обработку пары-тройки маршрутов, то вполне можно использовать для этого свойство url объекта Request. Например:

const http = require("http"); http.createServer(function(request, response)< response.setHeader("Content-Type", "text/html; charset=utf-8;"); if(request.url === "/home" || request.url === "/")< response.write("

Home

"); > else if(request.url == "/about")< response.write("

About

"); > else if(request.url == "/contact")< response.write("

Contacts

"); > else< response.write("

Not found

"); > response.end(); >).listen(3000);

В данном случае обрабатываются три маршрута. Если идет обрашение к корню сайта или по адресу localhost:3000/home , то пользователю выводится строка «Home». Ели обращение идет по адресу localhost:3000/about , то пользователю в браузере отображается строка About и так далее. Если запрошенный адрес не соответствует ни одному маршруту, то выводится заговлок «Not Found».

Маршрутизация в Node.js

Однако опять же отмечу, что рамках специальных фреймворков, которые работают поверх Node.js, например, Express, есть более удобные способы для обработки маршрутов, которые нередко и используются.

Переадресация

Переадресация предполагает отправку статусного кода 301 (постоянная переадресация) или 302 (временная переадресация) и заголовка Location , который указывает на новый адрес. Например, выполним переадресацию с адреса localhost:3000/ на адрес localhost:3000/newpage

const http = require("http"); http.createServer(function(request, response) < response.setHeader("Content-Type", "text/html; charset=utf-8;"); if(request.url === "/")< response.statusCode = 302; // временная переадресация // на адрес localhost:3000/newpage response.setHeader("Location", "/newpage"); >else if(request.url == "/newpage") < response.write("New address"); >else < response.statusCode = 404; // адрес не найден response.write("Not Found"); >response.end(); >).listen(3000);

Источник

localhost:3000

The port number 3000 is not officially assigned by any application, but many different server software or application development platforms can use it on localhost by default. In terms of both TCP and UDP port, your thousandth port is usually down and unavailable. You can activate and use it whenever you want. Sometimes 2999 or 30001 port range can be used instead of this port. Especially in application development environments, platforms such as React, NodeJs, Wamp, Xammp, ISS on your local server use http://localhost:3000/ or http://127.0.0.1:3000/ by default because they are free. You can quickly access this address from the link above.

Can’t access to http://localhost:3000/ address

First of all, if you are having trouble accessing, try whether this port is open or not. On Windows systems open Command Promt (cmd.exe) Run as Administrator and write «netstat -ab»

On Linux or Unix, you must usage the «netstat -tulpn | grep LISTEN» commant on terminal window.
If the port is closed, enable it and also allow this port number in the Firewall settings.

How to create Simplest node.js http server (http://localhost:3000)

To create the simplest Node.js HTTP server listening on port 3000, you can follow these steps:

  1. Create a new directory for your project and navigate into it using your terminal/command prompt.
 
mkdir my-node-server cd my-node-server
  1. Create a new file named server.js in your project directory, and add the following code to create an HTTP server:
 
const http = require('http'); const server = http.createServer((req, res) => < res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); >); server.listen(3000, () => < console.log('Server running at http://localhost:3000/'); >);

That’s it! You’ve created a simple Node.js HTTP server listening on port 3000. You can modify the server response or add more routes and functionality as per your requirements.

Localhost & Your connection Analysis (live)

Date 2023/07/24 00:21:43
HTTP ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP ACCEPT CHARSET windows-1251,utf-8;q=0.7,*;q=0.7
HTTP ACCEPT ENCODING gzip
HTTP ACCEPT LANGUAGE ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
HTTP CONNECTION Keep-Alive
HTTP HOST localhosts.mobi
HTTP REFERER https://localhosts.mobi/
HTTP USER AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13
HTTP X FORWARDED FOR 95.143.190.109
HTTP CF RAY 7eb801341f971c97-FRA
HTTP X FORWARDED PROTO https
HTTP CF VISITOR
HTTP CDN LOOP cloudflare
HTTP CF CONNECTING IP 95.143.190.109
HTTP CF IPCOUNTRY RU
REMOTE ADDR 172.70.242.137
REMOTE PORT 60046
SERVER NAME localhosts.mobi
SERVER PORT 80
REQUEST URI /3000
REDIRECT URL /3000
HTTPS on
REDIRECT STATUS 200
LSWS EDITION Openlitespeed 1.7.17
X-LSCACHE on,crawler
SERVER PROTOCOL HTTP/1.1
SERVER SOFTWARE LiteSpeed
REQUEST METHOD GET
REQUEST TIME FLOAT 1690158103.7118
REQUEST TIME 1690158103

These data are reflected instantly. It is never saved on the server, stored or used.

127.0.0.1 Server Pages

Apache/2.4.54 (Win64) OpenSSL/1.1.1p PHP/8.2.0 Server at localhost Port 80

Источник

Читайте также:  Java add value to string
Оцените статью