Как создать 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

Как установить платформу интернет-магазина LiteCart в Ubuntu 16.04

Как установить платформу интернет-магазина LiteCart в Ubuntu 16.04

LiteCart является бесплатной платформой для покупок с открытым исходным кодом, написанной на PHP, jQuery и HTML 5. Это простой, легкий и простой в использовании софтвар для электронной коммерции.

Как установить Anchor CMS на CentOS 7 LAMP VPS

Как установить Anchor CMS на CentOS 7 LAMP VPS

Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.

Настройка NFS Share на Debian

Настройка NFS Share на Debian

NFS - это сетевая файловая система, которая позволяет компьютерам получать доступ к файлам через компьютерную сеть. Это руководство объясняет, как вы можете выставлять папки через NF

Как установить Matomo Analytics на Fedora 28

Как установить Matomo Analytics на Fedora 28

Используете другую систему? Matomo (ранее Piwik) - это аналитическая платформа с открытым исходным кодом, открытая альтернатива Google Analytics. Источник Matomo размещен o

Как установить PHP 7.3 на веб-сервере Arch Linux

Как установить PHP 7.3 на веб-сервере Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Работающий веб-сервер с доступом Apache или Nginx Sudo. Команды требуют

Настройте сервер TeamTalk в Linux

Настройте сервер TeamTalk в Linux

TeamTalk - это система конференц-связи, которая позволяет пользователям вести высококачественные аудио / видео-беседы, текстовый чат, передавать файлы и обмениваться экранами. Это я

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам

Как получить доступ к Vultr VPS

Как получить доступ к Vultr VPS

Vultr предоставляет несколько различных способов доступа к вашему VPS для настройки, установки и использования. Учетные данные для доступа Учетные данные для доступа к вашему VPS по умолчанию

Как установить Ranger Terminal File Manager в Linux

Как установить Ranger Terminal File Manager в Linux

Ranger - это файловый менеджер на основе командной строки с привязками клавиш VI. Он предоставляет минималистичный и приятный интерфейс curses с видом на иерархию каталогов.

Как использовать HTTPS на веб-сервере Arch Linux

Как использовать HTTPS на веб-сервере Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Работающий веб-сервер, доступ к Apache или Nginx Sudo Требуются команды t

Настройте Magento на CentOS 6

Настройте Magento на CentOS 6

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

Как собрать Brotli из исходного кода на Ubuntu 18.04 LTS

Как собрать Brotli из исходного кода на Ubuntu 18.04 LTS

Используете другую систему? Brotli - это новый метод сжатия с лучшей степенью сжатия, чем GZIP. Его исходный код размещен на этом Githu

Использование MySQL Views в Debian 7

Использование MySQL Views в Debian 7

Введение В MySQL есть замечательная функция, известная как views. Представления хранятся запросы. Думайте о них как о псевдониме для длинного запроса. В этом руководстве

Как установить AirSonic на CentOS 7

Как установить AirSonic на CentOS 7

Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания

Как установить OrangeScrum на CentOS 7

Как установить OrangeScrum на CentOS 7

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

Отключить или ограничить root-вход через SSH в Linux

Отключить или ограничить root-вход через SSH в Linux

Разрешение входа в систему через SSH обычно считается плохой практикой безопасности во всей индустрии технологий. Вместо этого вы можете выполнять чувствительные административные

Как установить Subrion 4.1 CMS на Ubuntu 16.04 LAMP VPS

Как установить Subrion 4.1 CMS на Ubuntu 16.04 LAMP VPS

Используете другую систему? Subrion 4.1 CMS - это мощная и гибкая система управления контентом с открытым исходным кодом (CMS), которая обеспечивает интуитивно понятный и понятный контент.

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я

Как установить DokuWiki на Ubuntu 16.04 LTS

Как установить DokuWiki на Ubuntu 16.04 LTS

Используете другую систему? DokuWiki - это вики-программа с открытым исходным кодом, написанная на PHP, для которой не требуется база данных. Хранит данные в текстовых файлах. DokuWik

Создание внешнего интерфейса HTML 5 RDP / SSH с использованием гуакамоле в Ubuntu 16.04 LTS

Создание внешнего интерфейса HTML 5 RDP / SSH с использованием гуакамоле в Ubuntu 16.04 LTS

Введение Цель этого руководства - избавиться от общедоступных соединений SSH и общедоступных RDP. Поместив все это за очень удобный клиент HTML5

Изучение 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. Прочтите эту статью, чтобы узнать больше