Как создать 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.
Contents
Создание проекта 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:
Стартовая цена:
$ 3,92
надежность
9,3
ценообразование
9,0
Дружественный интерфейс
9,3
Служба поддержки
9,3
особенности
9,3
Читать отзывы
Посетите A2 Хостинг
Стартовая цена:
$ 2,95
надежность
9,7
ценообразование
9,5
Дружественный интерфейс
9,7
Служба поддержки
9,7
особенности
9,6
Читать отзывы
Посетите FastComet
Стартовая цена:
$ 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
новичок