Содержание
Express — это минимальная и гибкая среда веб-приложений Node.js, предоставляющая надежный набор функций для веб-приложений и мобильных приложений.
В этой статье вы узнаете, как создать http-сервер, используя Express, и другие основные сведения, которые вам необходимо знать.
требование
добавлять экспресс в качестве зависимости в вашем проекте, чтобы добавить его, используйте следующую команду в командной строке Node.js:
npm install express
Вы можете выполнить это с --save
параметр, чтобы включить его в package.json, если он у вас есть. Теперь вы сможете использовать экспресс-модуль в ваших файлах JavaScript.
Структура HTTP-сервера в Express
- HTTP-метод, к которому применяется функция промежуточного программного обеспечения.
- Путь (маршрут), к которому применяется функция промежуточного программного обеспечения.
- Функция промежуточного программного обеспечения.
- Аргумент обратного вызова функции промежуточного программного обеспечения, который по соглашению называется «следующий».
- HTTP ответ аргумент функции промежуточного программного обеспечения, называемый «res» по соглашению.
- 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.