Как создать REST API с помощью Node, Express и Mongoose

  • Node.js, Express.js, Mongoose.js и MongoDB – отличные инструменты для создания простого и быстрого API REST.
  • Node.js – это пакет компиляции движка Google V8 JavaScript.
  • Express.js – это веб-сервер javascript, который имеет полную функцию веб-разработки, включая REST API.

Прежде чем мы начнем, обязательно должны быть установлены на вашем устройстве

  • Node.js
  • MongoDB
  • Редактор или IDE

Здесь мы используем Terminal и Atom в качестве текстового редактора. Для пользователей Windows вы можете работать с помощью командной строки Node.js.

Создание проекта Express.js и установка необходимых модулей

Запустите ваш терминал или командную строку узла, перейдите в папку ваших проектов.

Затем с помощью этой команды установите экспресс генератор.

$ sudo npm установить экспресс-генератор -g

Создайте приложение Express.js с помощью этой команды.

$ express node-rest-api -e

Далее, перейдите во вновь созданную папку проекта, затем установите модули узла.

$ cd node-rest-api && установка npm

Запустите сервер, используя строку ниже.

$ npm start

Вы получите этот лог в терминале.

> [email protected] start / Пользователи / didin / Документы / NodeApps / node-rest-api
> узел ./bin/www

Зайдите в ваш браузер и введите локальный: 3000, Ваш сервер готов, если вы получите результат ниже

Добавьте модуль Mongoose.js как ORM для MongoDB

Нажмите CTRL + C, чтобы остановить узел, затем введите команду для установки модуля Mongoose.js..

$ npm установить mongoose –save

затем введите эту команду, чтобы запустить сервер MongoDB.

$ mongod

Теперь, используя IDE или текстовый редактор, откройте и отредактируйте app.js в корне папки проекта.
Объявите мангуста в обязательных разделах.

var mongoose = require (‘mongoose’);

Используйте мангуста с родным Node Promise.

mongoose.Promise = global.Promise;

Затем создайте соединение с MongoDB.

mongoose.connect ( ‘MongoDB: // локальный / продукт’)
.тогда (() =>  console.log («соединение установлено»)
.catch ((err) => console.error (ERR));

Запустите приложение узла, используя это

$ npm start

если вы получили это сообщение на своем терминале, соединение с MongoDB успешно.

> [email protected] start / Пользователи / didin / Документы / NodeApps / node-rest-api
> узел ./bin/www
соединение успешно

Создать продукт Мангуст Модель

CTRL + C в терминале, чтобы остановить сервер узла, затем создать каталог моделей и файл javascript в качестве модели.

$ mkdir models
$ touch models / Product.js

В файле Product.js добавьте следующие строки кодов.

var mongoose = require (‘mongoose’);
var ProductSchema = new mongoose.Schema ({
имя_продукции: строка,
prod_desc: String,
prod_price: Number,
updated_at: {тип: Дата, по умолчанию: Date.now},
});
module.exports = mongoose.model (‘Product’, ProductSchema);

Создание маршрутов для конечной точки API REST

мы построим следующие функции для нашего REST API .

методEndpointsНоты
ПОЛУЧИТЬ/товарПолучить все продукты
ПОЛУЧИТЬ/Код товараПолучить один продукт
ПОСЛЕ/товарДобавить товар
ПОЛОЖИЛ/Код товараОбновить продукт
УДАЛЯТЬ/Код товараУдалить товар

Сначала добавьте файл javascript в папку маршрутов.

$ touch routs / products.js

в маршрутах / products.js добавить эти строки кодов.

var express = require (‘express’);
var router = express.Router ();
var mongoose = require (‘mongoose’);
var Product = require (‘../ models / Product.js’);
/ * ПОЛУЧИТЬ ВСЕ ПРОДУКТЫ * /

router.get (‘/’, function (req, res, next) {
Product.find (function (err, products) {
if (err) возвращает next (err);
res.json (продукция);
});
});
/ * ПОЛУЧИТЬ ЕДИНЫЙ ПРОДУКТ ПО ID * /

router.get (‘/: id’, function (req, res, next) {
Product.findById (req.params.id, function (err, post) {
if (err) возвращает next (err);
res.json (пост);
});
});
/ * СОХРАНИТЬ ПРОДУКТ * /

router.post (‘/’, function (req, res, next) {
Product.create (req.body, function (err, post) {
if (err) возвращает next (err);
res.json (пост);
});
});
/ * ОБНОВЛЕНИЕ ПРОДУКТА * /

router.put (‘/: id’, function (req, res, next) {
Product.findByIdAndUpdate (req.params.id, req.body, function (err, post) {
if (err) возвращает next (err);
res.json (пост);
});
});
/ * УДАЛИТЬ ПРОДУКТ * /

router.delete (‘/: id’, function (req, res, next) {
Product.findByIdAndRemove (req.params.id, req.body, function (err, post) {
if (err) возвращает next (err);
res.json (пост);
});
});

module.exports = router;

Далее, в app.js добавьте маршрут продукта как требуется после того, как пользователи требуют.

var products = require (‘./ маршруты / продукты’);

Затем добавьте использование после использования пользователей.

app.use (‘/ products’, products);

Тестирование конечных точек API REST

Существует так много инструментов для тестирования REST API, мы тестируем с использованием CURL с терминала.

Сначала мы начнем с добавления / сохранения данных о продукте.

$ curl -i -X ​​POST -H "Тип контента: приложение / JSON" -д ‘{ "ргой_пате":"Ноутбук HP ","prod_desc":"новый лс","ргой_рг! се": 999} ‘localhost: 3000 / продукты

Если вы получите этот ответ, то продукт успешно сохранен.

HTTP / 1.1 200 ОК
X-Powered-By: Экспресс
Тип контента: приложение / JSON; кодировка = UTF-8
Длина контента: 185
ETag: W /"b9-ymiFjoNdt5wABoii1CiYbg"
Дата: Солнце, 19 февраля 2017 г. 03:30:35 GMT
Подключение: keep-alive
{"__v": 0,"ргой_пате":"Ноутбук HP ","prod_desc":"новый лс ","ргой_рг! се": 999 ,"_Я бы":"1","updated_at":"2018-08-07T03: 30: 34.415Z"}

Вы можете так же сохранить больше записей.

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

$ curl -i -H "Принять: приложение / JSON" LOCALHOST: 3000 / продукты

Ответ будет отображаться в формате JSON, как показано ниже.

HTTP / 1.1 200 ОК
X-Powered-By: Экспресс
Тип контента: приложение / JSON; кодировка = UTF-8
Длина контента: 344
ETag: W /"158-V1WRYZrNC8yW7HFEfOSSew"
Дата: вс, 19 февр. 2017, 03:34:26 GMT
Подключение: keep-alive
[{"_Я бы":"1","ргой_пате":"Ноутбук HP","prod_desc":"новый лс ","ргой_рг! се": 999,"__v": 0,"updated_at":"2018-08-07T03: 30: 34.415Z"}, {"_Я бы":"2","ргой_пате":"Сони Иксперия","prod_desc":" Телефон Sony"," ргой_рг! се": 600,"__v": 0,"updated_at":"2018-08-05T03: 33: 24.941Z"}]

Далее, чтобы получить один продукт по идентификатору, используйте эту команду.

$ curl -i -H "Принять: приложение / JSON" локальный: 3000 / продукция / 2

Вот ответ.

HTTP / 1.1 200 ОК
X-Powered-By: Экспресс
Тип контента: приложение / JSON; кодировка = UTF-8
Длина контента: 156
ETag: W /"9c-NYW3p4BkPVbiNf05Ezj + гА"
Дата: вс, 19 фев. 2017 г. 03:45:48 GMT
Подключение: keep-alive
{"_Я бы":"2","ргой_пате":"Сони Иксперия","prod_desc":"Телефон Sony  ","ргой_рг! се": 600,"__v": 0,"updated_at":"2018-08-05T03: 33: 24.941Z"}]

Далее мы собираемся обновить продукт по идентификатору с помощью этой команды.

$ curl -i -X ​​PUT -H "Тип контента: приложение / JSON" -д ‘{"prod_desc":"старый лс"} ‘localhost: 3000 / products / 1

ответ должен быть таким.

HTTP / 1.1 200 ОК
X-Powered-By: Экспресс
Тип контента: приложение / JSON; кодировка = UTF-8
Длина контента: 185
ETag: W /"b9-k9Wipgusc9JVZAMyHgjVXw"
Дата: вс, 19 фев. 2017 г. 03:38:24 GMT
Подключение: keep-alive
{"_Я бы":"1","ргой_пате":"Ноутбук HP","prod_desc":"новый лс ","ргой_рг! се": 999,"__v": 0,"updated_at":"2018-08-07T06: 30: 34.415Z"}

Наконец, мы собираемся удалить продукт по идентификатору, как показано ниже.

$ curl -i -X ​​DELETE localhost: 3000 / products / 1

Ответ будет выглядеть так.

HTTP / 1.1 200 ОК
X-Powered-By: Экспресс
Тип контента: приложение / JSON; кодировка = UTF-8
Длина контента: 155
ETag: W /"9b-pP1KXaQhyqcMkvBlLa6pFQ"
Дата: вс, 19 фев. 2017 г. 03:41:54 GMT
Подключение: keep-alive
{"_Я бы":"1","ргой_пате":"Ноутбук HP","prod_desc":"новый лс ","ргой_рг! се": 999,"__v": 0,"updated_at":"2018-08-07T06: 30: 34.415Z"}

Быстрое создание REST API с использованием Node-Restful Library

Одним из более быстрых и элегантных методов создания REST API является библиотека Node-Restful, которую вы можете найти на Github. Вы можете добавить библиотеку с помощью команды npm.

$ npm install node-restful –save

В app.js в корне проекта. Добавить строку запроса для Node-Restful и Method-Override.

var restful = require (‘node-restful’);
var methodOverride = require (‘method-override’);

+ Изменить "bodyParse расширенный" Значение true, затем добавьте эти строки.

app.use (bodyParser.urlencoded ({ ‘расширенной’: ‘истина’}));
app.use (bodyParser.json ({типа: ‘приложение / vnd.api + JSON’}));
app.use (methodOverride ());

Мы создадим модель mongoose, которую можно использовать вместе с библиотекой Node-Restful. Здесь мы создаем "категория" модель.

var Category = app.resource = restful.model (‘category’, mongoose.Schema ({
cat_name: String,
}))
.методы ([‘get’, ‘post’, ‘put’, ‘delete’]);
Category.register (приложение, «/ категория»);

Запустите приложение снова и протестируйте его, используя предыдущий способ тестирования REST API..

Проверьте лучшие 3 хостинга Node.js:

А2 Хостинг

Стартовая цена:
$ 3,92


надежность
9,3


ценообразование
9,0


Дружественный интерфейс
9,3


Служба поддержки
9,3


особенности
9,3

Читать отзывы

Посетите A2 Хостинг

FastComet

Стартовая цена:
$ 2,95


надежность
9,7


ценообразование
9,5


Дружественный интерфейс
9,7


Служба поддержки
9,7


особенности
9,6

Читать отзывы

Посетите FastComet

Hostinger

Стартовая цена:
$ 0,99


надежность
9,3


ценообразование
9,3


Дружественный интерфейс
9,4


Служба поддержки
9,4


особенности
9,2

Читать отзывы

Посетить Hostinger

Связанные статьи с практическими рекомендациями

  • Как установить MongoDB на ваш CentOS 7 VPS или выделенный сервер
    промежуточный
  • Как установить MongoDB на ваш Ubuntu 18.04 VPS или выделенный сервер
    промежуточный
  • Как установить MongoDB на Ubuntu 18.04
    промежуточный
  • Как установить MongoDB на VPS или выделенный сервер Debian 9
    новичок
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me