Учебники

Node.js — Express Framework

Express — это минимальная и гибкая среда веб-приложений Node.js, предоставляющая надежный набор функций для разработки веб-приложений и мобильных приложений. Это способствует быстрой разработке веб-приложений на основе Node. Ниже приведены некоторые из основных функций Express Framework —

  • Позволяет настроить промежуточное ПО для ответа на HTTP-запросы.

  • Определяет таблицу маршрутизации, которая используется для выполнения различных действий на основе метода HTTP и URL-адреса.

  • Позволяет динамически отображать HTML-страницы на основе передачи аргументов в шаблоны.

Позволяет настроить промежуточное ПО для ответа на HTTP-запросы.

Определяет таблицу маршрутизации, которая используется для выполнения различных действий на основе метода HTTP и URL-адреса.

Позволяет динамически отображать HTML-страницы на основе передачи аргументов в шаблоны.

Установка Экспресс

Во-первых, установите платформу Express глобально с помощью NPM, чтобы ее можно было использовать для создания веб-приложения с использованием терминала терминала.

$ npm install express --save

Приведенная выше команда сохраняет установку локально в каталоге node_modules и создает экспресс-каталог внутри node_modules. Вы должны установить следующие важные модули вместе с экспресс —

  • body-parser — это промежуточное программное обеспечение node.js для обработки данных форм в кодировке JSON, Raw, Text и URL.

  • cookie-parser — анализирует заголовок Cookie и заполняет req.cookies объектом, обозначенным именами cookie.

  • multer — это промежуточное программное обеспечение node.js для обработки multipart / form-data.

body-parser — это промежуточное программное обеспечение node.js для обработки данных форм в кодировке JSON, Raw, Text и URL.

cookie-parser — анализирует заголовок Cookie и заполняет req.cookies объектом, обозначенным именами cookie.

multer — это промежуточное программное обеспечение node.js для обработки multipart / form-data.

$ npm install body-parser --save
$ npm install cookie-parser --save
$ npm install multer --save

Привет мир Пример

Ниже приведено очень простое приложение Express, которое запускает сервер и прослушивает порт 8081 для подключения. Это приложение отвечает Hello World! для запросов на домашнюю страницу. Для каждого другого пути он ответит 404 Not Found.

var express = require('express');
var app = express();

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Сохраните приведенный выше код в файле с именем server.js и запустите его с помощью следующей команды.

$ node server.js

Вы увидите следующий вывод —

Example app listening at http://0.0.0.0:8081

Откройте http://127.0.0.1:8081/ в любом браузере, чтобы увидеть следующий результат.

Первое приложение

Ответ на запрос

Приложение Express использует функцию обратного вызова, параметрами которой являются объекты запроса и ответа .

app.get('/', function (req, res) {
   // --
})
  • Объект запроса — объект запроса представляет запрос HTTP и имеет свойства для строки запроса запроса, параметров, тела, заголовков HTTP и т. Д.

  • Объект ответа — объект ответа представляет собой HTTP-ответ, который приложение Express отправляет при получении HTTP-запроса.

Объект запроса — объект запроса представляет запрос HTTP и имеет свойства для строки запроса запроса, параметров, тела, заголовков HTTP и т. Д.

Объект ответа — объект ответа представляет собой HTTP-ответ, который приложение Express отправляет при получении HTTP-запроса.

Вы можете распечатать req и res объекты, которые предоставляют много информации, связанной с HTTP-запросом и ответом, включая куки, сессии, URL и т. Д.

Базовая маршрутизация

Мы видели базовое приложение, которое обслуживает HTTP-запрос для домашней страницы. Маршрутизация относится к определению того, как приложение отвечает на запрос клиента к конкретной конечной точке, которая представляет собой URI (или путь) и конкретный метод HTTP-запроса (GET, POST и т. Д.).

Мы расширим нашу программу Hello World, чтобы обрабатывать больше типов HTTP-запросов.

var express = require('express');
var app = express();

// This responds with "Hello World" on the homepage
app.get('/', function (req, res) {
   console.log("Got a GET request for the homepage");
   res.send('Hello GET');
})

// This responds a POST request for the homepage
app.post('/', function (req, res) {
   console.log("Got a POST request for the homepage");
   res.send('Hello POST');
})

// This responds a DELETE request for the /del_user page.
app.delete('/del_user', function (req, res) {
   console.log("Got a DELETE request for /del_user");
   res.send('Hello DELETE');
})

// This responds a GET request for the /list_user page.
app.get('/list_user', function (req, res) {
   console.log("Got a GET request for /list_user");
   res.send('Page Listing');
})

// This responds a GET request for abcd, abxcd, ab123cd, and so on
app.get('/ab*cd', function(req, res) {   
   console.log("Got a GET request for /ab*cd");
   res.send('Page Pattern Match');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Сохраните приведенный выше код в файле с именем server.js и запустите его с помощью следующей команды.

$ node server.js

Вы увидите следующий вывод —

Example app listening at http://0.0.0.0:8081

Теперь вы можете попробовать разные запросы на http://127.0.0.1:8081, чтобы увидеть вывод, сгенерированный server.js. Ниже приведены несколько снимков экрана, на которых показаны разные ответы для разных URL-адресов.

Снова отображается экран http://127.0.0.1:8081/list_user

Второе приложение

Снова появляется экран http://127.0.0.1:8081/abcd

Третье приложение

Снова отображается экран http://127.0.0.1:8081/abcdefg

Четвертое приложение

Обслуживание статических файлов

Express предоставляет встроенное промежуточное программное обеспечение express.static для обслуживания статических файлов, таких как изображения, CSS, JavaScript и т. Д.

Вам просто нужно передать имя каталога, в котором вы храните свои статические ресурсы, промежуточному программному обеспечению express.static, чтобы начать обслуживание файлов напрямую. Например, если вы храните свои изображения, файлы CSS и JavaScript в каталоге с именем public, вы можете сделать это —

app.use(express.static('public'));

Мы будем хранить несколько изображений в подкаталоге public / images следующим образом:

node_modules
server.js
public/
public/images
public/images/logo.png

Давайте изменим приложение «Hello Word», чтобы добавить функциональность для обработки статических файлов.

var express = require('express');
var app = express();

app.use(express.static('public'));

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)
})

Сохраните приведенный выше код в файле с именем server.js и запустите его с помощью следующей команды.

$ node server.js

Теперь откройте http://127.0.0.1:8081/images/logo.png в любом браузере и посмотрите, как выглядит следующий результат.

Пятая заявка

ПОЛУЧИТЬ метод

Вот простой пример, который передает два значения, используя метод HTML FORM GET. Мы будем использовать маршрутизатор process_get внутри server.js для обработки этого ввода.

<html>
   <body>
      
      <form action = "http://127.0.0.1:8081/process_get" method = "GET">
         First Name: <input type = "text" name = "first_name">  <br>
         Last Name: <input type = "text" name = "last_name">
         <input type = "submit" value = "Submit">
      </form>
      
   </body>
</html>

Давайте сохраним приведенный выше код в index.htm и изменим server.js для обработки запросов домашней страницы, а также ввода, отправляемого HTML-формой.

var express = require('express');
var app = express();

app.use(express.static('public'));
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.get('/process_get', function (req, res) {
   // Prepare output in JSON format
   response = {
      first_name:req.query.first_name,
      last_name:req.query.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Доступ к документу HTML с использованием http://127.0.0.1:8081/index.htm приведет к созданию следующей формы:

First Name:
Last Name:

Теперь вы можете ввести имя и фамилию, а затем нажать кнопку «Отправить», чтобы увидеть результат, и он должен вернуть следующий результат -

{"first_name":"John","last_name":"Paul"}

Метод POST

Вот простой пример, который передает два значения, используя метод HTML FORM POST. Мы будем использовать маршрутизатор process_get внутри server.js для обработки этого ввода.

<html>
   <body>
      
      <form action = "http://127.0.0.1:8081/process_post" method = "POST">
         First Name: <input type = "text" name = "first_name"> <br>
         Last Name: <input type = "text" name = "last_name">
         <input type = "submit" value = "Submit">
      </form>
      
   </body>
</html>

Давайте сохраним приведенный выше код в index.htm и изменим server.js для обработки запросов домашней страницы, а также ввода, отправляемого HTML-формой.

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

app.use(express.static('public'));
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/process_post', urlencodedParser, function (req, res) {
   // Prepare output in JSON format
   response = {
      first_name:req.body.first_name,
      last_name:req.body.last_name
   };
   console.log(response);
   res.end(JSON.stringify(response));
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Доступ к документу HTML с использованием http://127.0.0.1:8081/index.htm приведет к созданию следующей формы:

First Name:
Last Name:

Теперь вы можете ввести имя и фамилию, а затем нажать кнопку отправки, чтобы увидеть следующий результат -

{"first_name":"John","last_name":"Paul"}

Файл загружен

Следующий HTML-код создает форму загрузки файла. В этой форме атрибут метода имеет значение POST, а атрибут enctype - multipart / form-data.

<html>
   <head>
      <title>File Uploading Form</title>
   </head>

   <body>
      <h3>File Upload:</h3>
      Select a file to upload: <br />
      
      <form action = "http://127.0.0.1:8081/file_upload" method = "POST" 
         enctype = "multipart/form-data">
         <input type="file" name="file" size="50" />
         <br />
         <input type = "submit" value = "Upload File" />
      </form>
      
   </body>
</html>

Давайте сохраним приведенный выше код в index.htm и изменим server.js для обработки запросов домашней страницы, а также загрузки файлов.

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer  = require('multer');

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/'}));

app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})

app.post('/file_upload', function (req, res) {
   console.log(req.files.file.name);
   console.log(req.files.file.path);
   console.log(req.files.file.type);
   var file = __dirname + "/" + req.files.file.name;
   
   fs.readFile( req.files.file.path, function (err, data) {
      fs.writeFile(file, data, function (err) {
         if( err ) {
            console.log( err );
            } else {
               response = {
                  message:'File uploaded successfully',
                  filename:req.files.file.name
               };
            }
         
         console.log( response );
         res.end( JSON.stringify( response ) );
      });
   });
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port
   
   console.log("Example app listening at http://%s:%s", host, port)
})

Доступ к документу HTML с использованием http://127.0.0.1:8081/index.htm приведет к созданию следующей формы:

File Upload:
Select a file to upload: 

NOTE: This is just dummy form and would not work, but it must work at your server.

Управление Cookies

Вы можете отправлять куки на сервер Node.js, который может обрабатывать их, используя следующую опцию промежуточного программного обеспечения. Ниже приведен простой пример печати всех файлов cookie, отправленных клиентом.