Как создать RESTful API Node.js с помощью Express.js в Ubuntu 16.04 LTS

В этом руководстве вы узнаете, как настроить полноценный API RESTful, который будет обслуживать HTTP-запросы с использованием Node.js и Express, а также обратный прокси-сервер с NGINX в Ubuntu 16.04 LTS. Мы будем использовать приложение под названием Почтальоночень известный инструмент разработки API, чтобы протестировать наш API и убедиться, что он полностью функционален и работает правильно. Node.js - это быстрый кроссплатформенный фреймворк JavaScript, основанный на движке Chrome V8. Он используется в настольных и серверных приложениях и известен своей однопоточной обработкой цикла обработки событий. Мы будем использовать Node.js в качестве серверной части для нашего RESTful API, в комплекте с Express.js, нашей структурой веб-приложений, созданной для Node.js. Express.js выпущен как бесплатное и открытое программное обеспечение. Express на стороне сервера написан на JavaScript и предназначен для создания API, что делает его идеальным для нашего проекта. С другой стороны, Postman - очень мощный HTTP-клиент, имеющий в виду разработку API. Он включает в себя все инструменты, которые вы, возможно, захотите для разработки API.

Установка почтальона

Во-первых, вы хотите перейти на веб-сайт Postman , а также загрузить и установить Postman для вашего основного компьютера (не для вашего сервера). Все инструкции по установке будут на их сайте.

Установка Node.js

Для начала нам нужно будет установить Node.js, чтобы мы могли начать разработку нашего API. Мы будем загружать и устанавливать Node.js с официального сайта.

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

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

sudo apt-get install build-essential

Для этого урока мы будем использовать LTS-версию Node.js, которая является версией 8.9.3.

Инициализация нашего проекта Node.js

Нам нужно будет инициализировать новый проект Node.js, который будет содержать приложение. Для этого создайте новый каталог.

 mkdir expressapi 

Перейдите в новый каталог. Оказавшись внутри, запустите npm initи выполните все необходимые запросы. Запомните «точку входа» вашего приложения: вы создадите этот файл позже. Как только вы закончите, вы увидите package.jsonфайл в вашем текущем каталоге. Он действует как описание нашего проекта и перечисляет все зависимости, необходимые для функционирования.

Настройка Express.js

Теперь мы настроим Express.js и его зависимости.

npm install express

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

Начиная наш основной файл

Далее мы создадим наш основной начальный файл для нашего API. Здесь вы будете использовать «точку входа», которую вы видели в package.jsonфайле. Для этого урока я буду использовать схему именования по умолчанию index.js.

touch index.js

Затем откройте его в текстовом редакторе nano.

nano index.js

В нашем основном файле мы хотим сначала вызвать все наши основные пакеты и зарегистрировать наши маршруты.

var express = require('express');        
var app = express();                 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;  
const router = express.Router();
router.get('/', function(req, res) {
    res.json({ message: 'API is Online!' });   
});

app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);

По сути, здесь мы инициализируем наше приложение и настраиваем базовый маршрутизатор для нашего API. Обратите внимание, что мы установили порт нашего приложения в 8080. Этот номер понадобится нам при настройке нашего RESTful API. Теперь мы готовы пойти дальше и протестировать наш API.

Тестирование нашего API с Почтальоном

В каталоге проекта выполните следующее.

node <filename>.js

Это запустит API, где <filename>находится стартовый файл, который вы указали в package.jsonфайле. Затем откройте Postman на вашем ПК / Mac и нажмите кнопку « New» в правом верхнем углу, затем нажмите « Request». Когда там, вы должны увидеть бар с надписью " GET" рядом с ним. Здесь мы введем URL нашего запроса. Просто введите следующее в разделе URL запроса и нажмите « Send».

`http://your-server-ip:3000/api` 

Вы увидите " 'API is online'".

API-маршруты

Для обработки маршрутов мы будем использовать маршрутизатор Express. Если вы не знаете, что такое маршрутизатор, то, по сути, именно так конечные точки приложения отвечают на запросы клиентов. Вот маршруты, которые мы будем устанавливать в качестве примера:

  • /api/numbers - показывает все цифры от 1-10.

  • /api/letters - Показывает все буквы от AZ.

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

router.use(function(req, res, next) {
   console.log('We've got something.');
   next() //calls next middleware in the application.
});

router.route('/numbers/:number').get((req, res) => {
     res.json({result: req.params.number + 1})
});

В этом примере мы настроили ситуацию, когда пользователь может запросить сумму числа +1, предоставив ее в форме слова, используя метод GET. Мы используем router.route()функцию, чтобы указать, какой номер мы хотим отправить в результате. Параметры именуются с " :" перед ними. Мы получаем доступ к этим параметрам через req.params.

Вот пример с буквами.

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

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

Введение в NGINX

NGINX - это хорошо известное программное обеспечение с открытым исходным кодом, используемое для веб-обслуживания, обратных прокси-серверов, потоковой передачи и многого другого. Мы будем использовать NGINX для обратного прокси нашего API, чтобы мы могли запускать его через порт 80, потому что Node.js не разрешает соединения через порты менее 1024 без корневого доступа. Это может пригодиться при привязке вашего домена к вашему серверу.

Настройка NGINX

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

sudo apt-get install nginx

Далее мы хотим создать файл нашего сайта, который NGINX будет использовать для обратного прокси-приложения нашего приложения.

sudo nano /etc/nginx/sites-available-api.js

Заполните файл следующим, затем CTRL+, Oчтобы сохранить его.

server {
          listen 80;
          location / {
                proxy_set_header X-Real-IP 
                $remote_addr;
                proxy_set_header 
                X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header Host 
                $http_host;
                proxy_set_header 
                X-NginX-Proxy true; proxy_pass 
                http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade 
                $http_upgrade;
                proxy_set_header Connection 
                "upgrade";
                proxy_redirect off;
                proxy_set_header 
               X-Forwarded-Proto $scheme;
       }
}

Используя тот же порт, на котором мы запускали наше приложение ранее, мы говорим Nginx перенаправить все запросы с нашего IP-адреса на порт 80на наш API, работающий на порту 8080.

Далее, включите обратный прокси-сервер, добавив символическую ссылку в наш новый файл sites-available:

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

Это гарантирует, что NGINX обратит прокси к нашему API.

Первый запуск с NGINX

Как только мы завершили нашу конфигурацию NGINX, мы запустим NGINX, а затем запустим наш API. Сначала перезапустите NGINX.

sudo systemctl restart nginx

Затем вернитесь в каталог API и запустите его.

node <filename>.js

Приложение будет запущено через порт 80. Просто запустите тест сверху с Почтальоном, чтобы убедиться, что все работает правильно.

Поддержание нашего API в рабочем состоянии

В производственной среде вы хотите убедиться, что у вас есть диспетчер процессов для ваших приложений Node, чтобы они всегда работали в фоновом режиме. В этом уроке мы будем использовать менеджер процессов под названием PM2 (Process Manager 2), который является менеджером процессов для приложений Node.js, который будет поддерживать их навсегда с минимальным временем простоя. PM2 поставляется со многими полезными инструментами управления, такими как остановка, перезагрузка, приостановка и многое другое. Чтобы установить PM2, введите следующее и дождитесь его установки.

sudo npm install pm2 -g

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

pm2 start <filename>.js

Управление нашим приложением с помощью PM2

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

  • pm2 stop- Как следует из названия, это позволяет вам остановить работающее в данный момент приложение и завершить его процесс. Если ваше приложение дает неожиданный результат, его остановка пригодится.

  • pm2 list- Функция списка позволяет просматривать все запущенные в данный момент приложения через PM2, сопоставленные по их именам. Если вам нужно быстро проверить работоспособность вашего приложения, вы должны использовать этот инструмент.

  • pm2 restart- Если ваше приложение по какой-то причине зависает и вы хотите перезагрузить его, перезапуск pm2 сделает именно это. Это убьет процесс приложения и запустит его снова, в другом процессе.

  • pm2 monit- Встроенный в PM2 инструмент мониторинга позволяет вам просматривать график конкретных деталей вашего приложения, таких как использование CPU / RAM, в удобном для пользователя графике в стиле ncurses. Это полезно, если вам нужна визуальная картина загрузки вашего приложения.

Заключительные замечания

Теперь мы завершили нашу задачу по созданию RESTful API, используя Node.js, Express и обратного прокси-сервера с NGINX. Не стесняйтесь расширять этот учебник. С вашим новым API вы можете делать много замечательных вещей, например добавлять методы аутентификации, базу данных, улучшать обработку маршрутов и ошибок и многое, многое другое. Если у вас есть домен с записью «A», уже настроенной для вашего IP-адреса, вы сможете получить доступ к своему API из своего домена. Если вы хотите узнать больше о Express.js, посетите их веб-сайт по адресу http://expressjs.com . Чтобы узнать больше о NGINX и обратном проксировании, посетите http://nginx.com . Чтобы узнать больше о PM2, посетите их страницу по адресу http://pm2.keymetrics.io .



Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше