Эта статья посвящена созданию RESTful API с использованием хапиджей и мангуста.
API будет обрабатывать CRUD для объекта [Волк], используя HTTP-глаголы - GET, PUT, POST и DELETE.
Ладно, приступим
Убедитесь, что на вашем компьютере установлен узел и пряжа как глобальный пакет.
Создайте каталог проекта с именем «/ hapijs-mongoose-restapi», запустите команду и заполните необходимые данные.
yarn init
Укажите основной файл как app.js
yarn init похож на npm init, при этом будет сгенерирован файл package.json. Подробнее см. yarn.
затем установите node_modules, которые нам нужны для этого API
yarn add hapi mongoose --dev
Создание сервера hapi в app.js
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection({
host: 'localhost',
port: 4000
});
server.route({
method: 'GET',
path: '/',
handler(request, reply) {
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/api',
handler(request, reply) {
reply('Hello, API!');
}
});
server.start(err => {
if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});
exports.server = server;
- server.connection - для подключения к серверу с хостом и портом
- server.route - будет содержать объект маршрута
В server.router обработчик вернется с использованием API return () - https://hapijs.com/api#replyerr-result, где возврат используется для завершения действия обработчика путем установки ответа и возврата ответ и статус обработчику.
- server.start - Для запуска сервера
Запуск сервера и тестирование маршрута индекса
nodemon app.js
Давайте протестируем API с помощью Postman - приложения для Chrome / Mac.
откройте Почтальон, выберите команду GET HTTP, введите URL-адрес http: // localhost: 4000 и нажмите Отправить. В теле ответа должно быть указано Hapi World!.
Создайте подключение mongoDB к API, создайте файл database.js в корневом каталоге приложения.
var Mongoose = require('mongoose');
//load database
Mongoose.connect('mongodb://localhost/hapijs-mongoose-restapi/');
var db = Mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
db.once('open', function callback() {
console.log('Connection with database succeeded.');
});
exports.db = db;
и включите database.js в app.js
// app.js
const db = require('./database').db;
Это подключится к mongoDB, а затем давайте создадим модель схемы мангуста для наших волков, модели были помещены в каталог / models
МОДЕЛЬ ВОЛКА
путь для создания модели волка - /hapijs-mongoose-restapi/models/Wolf.js
Модель Wolf будет иметь только поле name, где SchemaType - String.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
var WolfSchema = new Schema({
name: String
});
module.exports = mongoose.model('Wolf', WolfSchema);
с созданной моделью Wolf.js, потребуйте это в app.js
// app.js
const Hapi = require('hapi');
const server = new Hapi.Server();
const db = require('./database').db;
...
Здесь будет работать nodemon, он будет следить за вашими изменениями в любом файле в каталоге приложения и перезапускает сервер за вас, без проблем с CTRL + C.
МАРШРУТЫ - Маршрут API по умолчанию
URL - http: // localhost: 4000 / api
// app.js
...
server.route({
method: 'GET',
path: '/api',
handler: function (request, reply) {
reply({'message': 'Hello, API!'});
}
});
МАРШРУТЫ
Создайте файл routes.js и включите этот файл в app.js
// routes.js module.exports = [];
затем включите этот routes.js в файл app.js
// app.js … const routes = require(‘./routes’); server.route(routes);
Путь GET - ПОЛУЧЕНИЕ ВСЕХ ВОЛКОВ
Требовать модель Волка на router.js
URL - http: // localhost: 4000 / api / wolves
// routes.js
const Wolf = require('./models/Wolf');
module.exports = [
{
method: 'GET',
path: '/api/wolves',
handler: function (request, reply) {
Wolf.find(function(error, wolves) {
if (error) {
console.error(error);
}
reply(wolves);
});
}
}
];
Это простой маршрут, который отобразит всех волков в формате JSON.
ПОЧТОВЫЙ Маршрут - СПАСЕНИЕ ВОЛКА
В routes.js создайте модуль для POST, который предназначен для сохранения Wolf
URL - http: // localhost: 4000 / api / wolves / GrayWolf
// routes.js
const Wolf = require('./models/Wolf');
module.exports = [
{
method: 'GET',
path: '/api/wolves',
handler: function (request, reply) {
Wolf.find(function(error, wolves) {
...
});
}
},
{
method: ['PUT', 'POST'],
path: '/api/wolves/{name}',
handler: function (request, reply) {
const wolf = new Wolf({
name: request.params.name
});
wolf.save(function(error, wolf) {
if (error) {
console.error(error);
}
reply(wolf.id);
});
}
}
];
Это вернет идентификатор объекта, созданный в mongoDB.
Вы можете найти исходный код здесь.
Заключение
Теперь у нас есть способы обрабатывать CRUD на Wolves с помощью hapiJS.
Нажмите js-rest-api на значок сердца, который находится под этим сообщением, и если у вас есть какие-либо вопросы, прокомментируйте ниже.