Рубрики
Без рубрики

Построить Node.js reзов apits за 10 минут

В этом руководстве мы узнаем, как создать reзов API, используя node.js.

Автор оригинала: Olatunde Michael Garuba.

Что отдых?

Остальное – это аббревиатура для репрезентативного трансфера состояния. Это веб-архитектура веб-стандартов и протокол HTTP. Остальный архитектурный стиль описывает шесть ограничений, которые были первоначально переданы Рой вылетением в своей докторской диссертации и определяют основу спокойного стиля, как:

  1. Единый интерфейс
  2. Бездействие
  3. Хенд
  4. Клиент-сервер
  5. Слоистая система
  6. Код по требованию (необязательно)

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, давайте начнем урокул со следующими основными шагами.

Откройте свой терминал и просьба выполнить следующие шаги

  1. Создать имя папки toolistapi – Мкдир Тодолистапи.

  2. Перейдите к корню вашей недавно созданной папки – CD ToListapi.

  3. Создать package.json file – NPM init Package.json – это файл, который дает необходимую информацию для NPM, которая позволяет ему идентифицировать проект, а также обрабатывать зависимости проекта. NPM init подскажет вам ввести некоторую информацию, такую как имя приложения, описание, версия, автора, ключевое слово, а также спросите, что вы видите, это то, что вам нравится. Вы должны иметь что-то вроде этого в конце концов. Пожалуйста, введите Да и нажмите Enter, чтобы завершить создание нашего Package.json. Сделав все это, ваша структура папки должна выглядеть так:

  4. Создайте файл под названием Server.js – Нажмите Server.js Отказ На этом сервере мы пишем протоколы для создания нашего сервера.

  5. Создать папку под названием API – MKDIR API В этой папке называется API, создайте три отдельных папчи, называемые моделями, маршрутами и контроллерами, запущенными MKDIR API/Контроллеры API/Модели API/Маршруты

  6. Создать 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 будет изменен, чтобы иметь два вновь установленных пакета.

  1. Откройте файл Package.json и добавьте эту задачу в скрипт

«Пуск»: «Nodemon Server.js»

Введите описание изображения здесь
  1. Откройте файл 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 с фрагментом кода из этого раздела

  1. Подключите базу данных, добавив URL в соединение экземпляра Mongoose
  2. Загрузить созданную модель – задание
  3. Установите BodyParser и используйте BodyParser разбирает входящие телы запроса в промежуточное освещение перед вашими обработчиками, доступными в рамках свойства REQ. Он предоставляет различные фабрики для создания потрачений. Все Hiddmwares заполнит req.bodyproperty с анализом корпусом или пустой объект ({}), если не было тела для анализа (или ошибка была возвращена).
  4. Зарегистрируйте наши созданные маршруты на сервере
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 на вашем узком утесении.

Тестирование через почтальон

Теперь, когда все подключено, давайте тестируем каждую из маршрутов и соответствующих методов.

Откройте свой почтальон и введите:

  1. http://localhost: 3000/Задачи В разделе «Ввод URL-адреса запроса» и нажмите Enter.

    Вход, вы должны увидеть «[]», потому что в базе отсутствует ничего в базе данных.
  2. На том же адресе Измените метод для размещения, щелкните корпус и выберите «X-www-Form-urlencoded». Затем введите имя в качестве ключа и соответствующее имя задачи в качестве значения. После этого нажмите кнопку «Отправить». Это должно дать вам ответ 200 ОК
Снятый на экран 2017-03-03 в 8.12.55 PM.PNG

Добавление промежуточного программного обеспечения

Сделав все это, что произойдет, если мы ввели неправильный маршрут? Скажем, вы ввели «http://localhost: 3000/задание», это отвечает сообщение «Невозможно получить/задачу». Добавим Express Madreware, которая может быть использована для возврата более интерактивных сообщений.

Indithwares В основном перехватывает входящий HTTP-запрос и, как таковые, вы можете использовать их для выполнения нескольких операций, начиная от аутентификации для проверки и т. Д.

Для этого откройте файл Server.js и вставьте фрагмент кода в него.

app.use(function(req, res) {
  res.status(404).send({url: req.originalUrl + ' not found'})
});

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