Автор оригинала: Olatunde Michael Garuba.
Что отдых?
Остальное – это аббревиатура для репрезентативного трансфера состояния. Это веб-архитектура веб-стандартов и протокол HTTP. Остальный архитектурный стиль описывает шесть ограничений, которые были первоначально переданы Рой вылетением в своей докторской диссертации и определяют основу спокойного стиля, как:
- Единый интерфейс
- Бездействие
- Хенд
- Клиент-сервер
- Слоистая система
- Код по требованию (необязательно)
Restful Privations Используйте HTTP-запросы для выполнения четырех операций, называемых CRUD (C: CREATE, R: READ, U: UPDATEMENT и D: Удалить). Создание и/или обновление используется для публикации данных, получить данные для чтения/листинга и удаления для удаления данных.
Спокойный состоит из таких методов, как; Базовый URL, URL, типы носителей и т. Д.
В этом руководстве мы узнаем, как создать reзов API, используя node.js.
Инструменты:
- Node.js.
- Монгодб
- Текстовый редактор (Atom, Sublime и т. Д.) (Подробнее: Лучший текстовый редактор? Atom vs Sublime VS Visual Studio Code VS VIM )
- Почтальон
Начиная
Для целей этого учебника я буду работать с вами путем создания восстановленного API. Для этого мы создадим Redful todo list api (I.e. Конечные точки, которые создадут задачу, получить или прочитать список всех задач, прочитайте определенную задачу, удалить задачу и обновлять задачу).
Допущения
Я предполагаю, что у вас уже есть окружающая среда (I.E Node.js и MongoDB устанавливаются).
Любезно беги NPM -V
и Mongo --version
Поскольку они покажут вам версию NPM и Mongodb, установленные на вашем компьютере.
Если у вас его не установлено, пожалуйста, пройдите через это ссылка О том, как установить его для того, чтобы мы создали сервер в узле и Монгодб Отказ
Если у вас установлен узел и MongoDB, давайте начнем урокул со следующими основными шагами.
Откройте свой терминал и просьба выполнить следующие шаги
Создать имя папки toolistapi –
Мкдир Тодолистапи.
Перейдите к корню вашей недавно созданной папки –
CD ToListapi.
Создать package.json file –
NPM init
Package.json – это файл, который дает необходимую информацию для NPM, которая позволяет ему идентифицировать проект, а также обрабатывать зависимости проекта. NPM init подскажет вам ввести некоторую информацию, такую как имя приложения, описание, версия, автора, ключевое слово, а также спросите, что вы видите, это то, что вам нравится. Вы должны иметь что-то вроде этого в конце концов. Пожалуйста, введите Да и нажмите Enter, чтобы завершить создание нашего Package.json. Сделав все это, ваша структура папки должна выглядеть так:Создайте файл под названием Server.js –
Нажмите Server.js
Отказ На этом сервере мы пишем протоколы для создания нашего сервера.Создать папку под названием API –
MKDIR API
В этой папке называется API, создайте три отдельных папчи, называемые моделями, маршрутами и контроллерами, запущеннымиMKDIR API/Контроллеры API/Модели API/Маршруты
Создать TOLISTCONTROLLER.JS в папке API/контроллера, TOLISTROUTES.JS в папке маршрутов и TOLISTMODEL в папке модели –
Touch API/Контроллеры/ToListController.js API/Модели/ToListModel.js API/Маршруты/ToListroutes.js
Наша структура папки должна выглядеть так:
Настройка сервера
Давайте установим Express и Nodmon, Express будет использоваться для создания сервера во время Nemmon, поможет нам отслеживать изменения в нашем приложении, просмотрев измененные файлы и автоматически перезагрузите сервер.
NPM установить –save-dev Nodemon
NPM Install Express –save
При успешной установке ваш файл package.json будет изменен, чтобы иметь два вновь установленных пакета.
- Откройте файл Package.json и добавьте эту задачу в скрипт
«Пуск»: «Nodemon Server.js»
- Откройте файл Server.js и введите/скопируйте код ниже в него
var express = require('express'), app = express(), port = process.env.PORT || 3000; app.listen(port); console.log('todo list RESTful API server started on: ' + port);
3. Ваш терминал, запустите NPM запустить начало
Это начнет сервер, а затем вы увидите
Список Todo RESTFLE API Server начался на: 3000
Настройка схемы
Прежде всего, давайте установим Mongoose – NPM установить Mongoose --save
Почему мангуст?
Mongoose – это то, что мы будем использовать для взаимодействия с экземпляром MongoDB (базы данных). После установки откройте файл ToListModel.js в папке API/Models и введите следующий код в файл и сохраните.
'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var TaskSchema = new Schema({ name: { type: String, required: 'Kindly enter the name of the task' }, Created_date: { type: Date, default: Date.now }, status: { type: [{ type: String, enum: ['pending', 'ongoing', 'completed'] }], default: ['pending'] } }); module.exports = mongoose.model('Tasks', TaskSchema);
Из указанного выше кода мы требовали мангуста в нашем файле, а затем мы создаем модель того, как должна выглядеть наша коллекция. Как видите, это сбор задач (таблица) будет содержать имя: строку, а дата ее создана. Он также содержит статус задач, который мы определили как ожидание – значение по умолчанию для каждой задачи.
Настройка маршрутов
Маршрутизация относится к определению того, как приложение отвечает на запрос клиента для определенной конечной точки, который является URI (или путь) и определенный метод HTTP-запроса (Get, Post и так далее). Каждый из наших маршрутов имеет разные функции обработчика маршрута, которые выполняются при соположении маршрута. Ниже мы определили два основных маршрута («/заданиях», а «/задачи/TaskiD») с различными методами «/задачи» имеет к методам («Get» и «Post»), в то время как «/задачи/TaskiD» получают , Поставить и удалить. Как видите, мы требовали контроллера, чтобы каждый из методов маршрутов может вызвать его соответствующей функциональной обработчике.
Для этого откройте файл ToListroutes.js в папке маршрута и вставьте фрагмент кода ниже в
'use strict'; module.exports = function(app) { var todoList = require('../controllers/todoListController'); // todoList Routes app.route('/tasks') .get(todoList.list_all_tasks) .post(todoList.create_a_task); app.route('/tasks/:taskId') .get(todoList.read_a_task) .put(todoList.update_a_task) .delete(todoList.delete_a_task); };
Настройка контроллера
Откройте файл ToListController.js с вашим текстовым редактором (Sublime, Atom e.t.c) и давайте глубоким погружением в кодировку.
В этом контроллере мы будем писать пять (5) различных функций, а именно: list_all_tasks, create_a_task, read_a_task, ustather_a_task, delete_a_task. Мы экспортируем каждый из функций для нас, чтобы использовать на наших маршрутах. Каждая из этих функций использует различные методы мангусты, такие как Find, FindbyID, FindoneAnduppdate, сохранение и удаление.
'use strict'; var mongoose = require('mongoose'), Task = mongoose.model('Tasks'); exports.list_all_tasks = function(req, res) { Task.find({}, function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.create_a_task = function(req, res) { var new_task = new Task(req.body); new_task.save(function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.read_a_task = function(req, res) { Task.findById(req.params.taskId, function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.update_a_task = function(req, res) { Task.findOneAndUpdate({_id: req.params.taskId}, req.body, {new: true}, function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.delete_a_task = function(req, res) { Task.remove({ _id: req.params.taskId }, function(err, task) { if (err) res.send(err); res.json({ message: 'Task successfully deleted' }); }); };
Положить все вместе
Ранее у нас был минимальный код для нашего сервера, который будет работать в файле Server.js. В этом разделе мы будем подключать наши обработчики (контроллеры), базы данных, созданные модели, парсер тела и созданные маршруты вместе.
Откройте файл Server.js, созданный некоторое время назад и следуйте следующим шагам, чтобы поставить все вместе. По сути, вы будете заменять код на вашем Server.js с фрагментом кода из этого раздела
- Подключите базу данных, добавив URL в соединение экземпляра Mongoose
- Загрузить созданную модель – задание
- Установите BodyParser и используйте BodyParser разбирает входящие телы запроса в промежуточное освещение перед вашими обработчиками, доступными в рамках свойства REQ. Он предоставляет различные фабрики для создания потрачений. Все Hiddmwares заполнит req.bodyproperty с анализом корпусом или пустой объект ({}), если не было тела для анализа (или ошибка была возвращена).
- Зарегистрируйте наши созданные маршруты на сервере
var express = require('express'), app = express(), port = process.env.PORT || 3000, mongoose = require('mongoose'), Task = require('./api/models/todoListModel'), //created model loading here bodyParser = require('body-parser'); // mongoose instance connection url connection mongoose.Promise = global.Promise; mongoose.connect('mongodb://localhost/Tododb'); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); var routes = require('./api/routes/todoListRoutes'); //importing route routes(app); //register the route app.listen(port); console.log('todo list RESTful API server started on: ' + port);
5.Тарт MongoDB Server
Откройте свой терминал и запустите монго
Это начнет ваш сервер MongoDB, а затем сервер узла может подключаться к экземпляру MongoDB. Как только ваш сервер MongoDB запущен, перезапустите сервер узла, запустив: RS
на вашем узком утесении.
Тестирование через почтальон
Теперь, когда все подключено, давайте тестируем каждую из маршрутов и соответствующих методов.
Откройте свой почтальон и введите:
http://localhost: 3000/Задачи В разделе «Ввод URL-адреса запроса» и нажмите Enter.
Вход, вы должны увидеть «[]», потому что в базе отсутствует ничего в базе данных.- На том же адресе Измените метод для размещения, щелкните корпус и выберите «X-www-Form-urlencoded». Затем введите имя в качестве ключа и соответствующее имя задачи в качестве значения. После этого нажмите кнопку «Отправить». Это должно дать вам ответ 200 ОК
Добавление промежуточного программного обеспечения
Сделав все это, что произойдет, если мы ввели неправильный маршрут? Скажем, вы ввели «http://localhost: 3000/задание», это отвечает сообщение «Невозможно получить/задачу». Добавим Express Madreware, которая может быть использована для возврата более интерактивных сообщений.
Indithwares В основном перехватывает входящий HTTP-запрос и, как таковые, вы можете использовать их для выполнения нескольких операций, начиная от аутентификации для проверки и т. Д.
Для этого откройте файл Server.js и вставьте фрагмент кода в него.
app.use(function(req, res) { res.status(404).send({url: req.originalUrl + ' not found'}) });
Вышесказанное фрагмент помогает перенаправлять и отвечать всякий раз, когда на сайте вводится неправильный маршрут.