Как создать http-сервер с Express в Node.js

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

В этой статье вы узнаете, как создать http-сервер, используя Express, и другие основные сведения, которые вам необходимо знать.

требование

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

npm install express

Вы можете выполнить это с --save параметр, чтобы включить его в package.json, если он у вас есть. Теперь вы сможете использовать экспресс-модуль в ваших файлах JavaScript.

Структура HTTP-сервера в Express

Express.js промежуточное ПО

  1. HTTP-метод, к которому применяется функция промежуточного программного обеспечения.
  2. Путь (маршрут), к которому применяется функция промежуточного программного обеспечения.
  3. Функция промежуточного программного обеспечения.
  4. Аргумент обратного вызова функции промежуточного программного обеспечения, который по соглашению называется «следующий».
  5. HTTP ответ аргумент функции промежуточного программного обеспечения, называемый «res» по соглашению.
  6. HTTP запрос аргумент функции промежуточного программного обеспечения, называемый по требованию req.

Привет, мир

Философия Express заключается в предоставлении небольшого и надежного инструментария для серверов HTTP, что делает его отличным решением для одностраничных приложений, веб-сайтов, гибридов или общедоступных API-интерфейсов HTTP.

Чтобы создать свой первый http-сервер с Express, создайте JS-файл с именем server.js и добавьте следующий код:

// Require express and create an instance of it
var express = require('express');
var app = express();
// on the request to root (localhost:3000/)
app.get('/', function (req, res) {
res.send('My first express http server');
});
// On localhost:3000/welcome
app.get('/welcome', function (req, res) {
res.send('Hello welcome to my http server made with express');
});
// Change the 404 message modifing the middleware
app.use(function(req, res, next) {
res.status(404).send("Sorry, that route doesn't exist. Have a nice day :)");
});
// start the server in the port 3000 !
app.listen(3000, function () {
console.log('Example app listening on port 3000.');
});

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

node server.js

Перейдите к порту 3000, как ранее было установлено в файле server.js в localhost (http: // localhost: 3000 или http: // localhost: 3000 / welcome), и вы увидите, как происходит волшебство.

Обрабатывать маршруты и методы запросов

Для предопределенного пути вы можете установить метод запроса по умолчанию или даже все из них. Маршруты могут быть строками, шаблонами или регулярными выражениями.

var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('My first express http server');
});
// 1) Add a route that answers to all request types
app.route('/article')
.get(function(req, res) {
res.send('Get the article');
})
.post(function(req, res) {
res.send('Add an article');
})
.put(function(req, res) {
res.send('Update the article');
});
// 2) Use a wildcard for a route
// answers to : theANYman, thebatman, thesuperman
app.get('/the*man', function(req, res) {
res.send('the*man');
});
// 3) Use regular expressions in routes
// responds to : batmobile, batwing, batcave, batarang
app.get(/bat/, function(req, res) {
res.send('/bat/');
});
app.use(function(req, res, next) {
res.status(404).send("Sorry, that route doesn't exist. Have a nice day :)");
});
app.listen(3000, function () {
console.log('Example app listening on port 3000.');
});

Маршруты маршрутов в сочетании с методом запроса определяют конечные точки, в которых могут выполняться запросы. Маршруты маршрутов могут быть строками, шаблонами строк или регулярными выражениями.

Обрабатывать маршруты с параметрами

Как это делают известные системы маршрутизации известных серверных инфраструктур в других языках, например Symfony, позволяют создавать динамические URL-адреса, которые ожидают, что параметры в URL-адресе (и не только параметры GET, но как часть URL-адреса) возвращают динамический контент, Express позволяют Вы можете достичь этого таким же образом, используя синтаксис «/ default-url /: parameter» в URL.

var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('My first express http server');
});
// route with parameters
// matches to : /books/stephenking/category/horror
app.get('/books/:user/category/:categorySlug', function(req, res) {
console.log(req.params);
var username = req.params.user;
var category = req.paramas.categorySlug;
res.send(req.params);
});
app.use(function(req, res, next) {
res.status(404).send("Sorry, that route doesn't exist. Have a nice day :)");
});
app.listen(3000, function () {
console.log('Example app listening on port 3000.');
});

Тип ответа

Между самой распространенной задачей на стороне сервера вам нужно вернуть ответ своему пользователю, у Express есть много способов вернуть конкретный ответ в соответствии с вашими потребностями:

метод
Описание
res.download ()Подскажите файл для скачивания.
Отправить()Завершить процесс ответа.
res.json ()Отправить ответ JSON.
res.jsonp ()Отправьте JSON-ответ с поддержкой JSONP.
res.redirect ()Перенаправить запрос.
res.render ()Визуализируйте шаблон представления.
res.send ()Отправить ответ различных типов.
res.sendFile ()Отправить файл в виде потока октетов.
res.sendStatus ()Установите код состояния ответа и отправьте его строковое представление в качестве тела ответа.

Ответ должен быть отправлен на каждый «контроллер» с объектом ответа:

app.get('/', function (req, res) {
// JSON response
res.json({
'myJson':'object'
});
// Generate file download
res.download('/path-to-file.txt');
// redirect to other url
res.redirect('/foo/bar');
res.redirect('http://example.com');
// Other response types
res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('

some html

'); res.status(404).send('Sorry, we cannot find that!'); res.status(500).send({ error: 'something blew up' }); });

HTTPS с экспресс

Иногда вам нужно получить доступ к специальным функциям браузера, которые доступны только при безопасных соединениях, поэтому вам нужно будет обеспечить поддержку SSL для вашего сервера.

Чтобы добиться этого с помощью Express, вам нужно получить доступ к модулю https для node.js (доступно по умолчанию), затем создать сервер с помощью метода createServer и указать путь к сертификатам .pem (если вы хотите знать, как создавать ).

var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('certificates/key.pem', 'utf8');
var certificate = fs.readFileSync('certificates/cert.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();
// your express configuration here
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
// For http
httpServer.listen(8080);
// For https
httpsServer.listen(8443);
app.get('/', function (req, res) {
res.header('Content-type', 'text/html');
return res.end('Hello, Secure World!');
});

Таким образом, вы получите доступ к localhost в безопасном режиме с помощью экспресс-навигации к https: // локальный: 8443.

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