Пошаговое руководство с примером проекта
REST - это аббревиатура от REpresentational State Transfer. Rest следует некоторым рекомендациям для облегчения связи между системами. В этом посте мы узнаем, как создать REST API с NodeJS и MongoDB в качестве базы данных. Сначала мы увидим, как мы начнем с Express Framework, создадим структуру, а затем увидим, как начать работу с MongoDB Atlas, создать базу данных и, наконец, настроить приложение NodeJS для чтения данных из MongoDB.
- Предварительные требования
- Пример проекта
- Структура проекта
- Настройка кластера MongoDB Atlas
- Создать базу данных
- Подключитесь к Mongo Compass
- Настроить приложение Mongo In Express
- Операции CRUD
- Ведение журнала
- Чванство
- Резюме
- Заключение
Предварительные требования
Есть некоторые предпосылки для этого поста. На вашем компьютере должен быть установлен NodeJS и некоторые другие инструменты, необходимые для завершения этого проекта.
NodeJS: как асинхронная среда выполнения JavaScript, управляемая событиями, Node.js предназначена для создания масштабируемых сетевых приложений.
Express Framework. Express - это минимальная и гибкая платформа веб-приложений Node.js, которая предоставляет надежный набор функций для веб-приложений и мобильных приложений.
Mongoose: элегантное моделирование объектов MongoDB для node.js
MongoDB:. MongoDB - это распределенная база данных общего назначения на основе документов, созданная для современных разработчиков приложений и для эпохи облачных вычислений.
VSCode: редактор, который мы используем для проекта. Это открытый исходный код, и вы можете скачать его здесь.
Swagger: документация по API.
Почтальон: ручное тестирование ваших API
nodemon: для ускорения разработки
Если вы новичок в NodeJS и не знаете, как создать с его помощью REST API, я бы порекомендовал прочитать следующую статью. Мы взяли за основу проект из этой статьи.
Как написать готовый к работе Node.js Rest API - версия Javascript
Пример проекта
Вот ссылка на Github для примера проекта, который вы можете просто клонировать и запустить на своем компьютере.
// clone the project git clone https://github.com/bbachi/nodejs-restapi-mongo.git
Вот основные классы и классы контроллера. Файл server.js является основным файлом, и отсюда вызывается стартовый файл API и контроллера.
Вот файл контроллера, у которого есть четыре метода.
Мы используем nodemon на этапе разработки, что ускоряет вашу разработку. Вам просто нужно запустить эту команду после установки всех зависимостей.
// install dependencies npm install // start the server in development phase npm run dev
Структура проекта
Давайте разберемся со структурой проекта, которая у нас есть. Отправной точкой приложения является server.js, и у нас есть все скрипты, зависимости и т. Д. В package.json.
У нас есть контроллер, сервис и репозиторий. Вся конфигурация, связанная с ведением журнала, находится в api.logger.js под регистратором папок. У нас есть файл .env для всей конфигурации, связанной с окружением. У нас есть swagger.json и swagger.css для документов swagger. У нас есть файл db.config.js для всей конфигурации базы данных.
Настройка кластера MongoDB Atlas
Ядром MongoDB Cloud является MongoDB Atlas, полностью управляемая облачная база данных для современных приложений. Атлас - лучший способ запустить MongoDB, ведущую современную базу данных.
Давайте создадим здесь вашу учетную запись MongoDB. Вы можете войти в систему с любой из своих учетных записей Gmail или указать любой другой адрес электронной почты для создания учетной записи.
После того, как вы войдете в свою учетную запись, вы увидите панель управления ниже, где вы можете создавать кластеры.
Давайте создадим кластер под названием todo-cluster, нажав на построение кластера и выбрав все детали ниже.
Вот кластер, который мы создали ниже.
Вы можете нажать кнопку подключения, чтобы просмотреть подробную информацию о подключении к кластеру. На данный момент вам нужно создать пользователя и разрешить доступ из любого места.
На следующем экране вы увидите три способа подключения к кластеру.
Мы увидим все эти три способа подключения к кластеру в следующих разделах.
Создать базу данных
Мы создали кластер, пора создать базу данных. Щелкните коллекции, чтобы создать новую базу данных, как показано ниже.
Нажмите кнопку «Добавить мои данные», чтобы создать новую базу данных.
Я дал имя базы данных как задачи, а имя коллекции - todos.
После создания базы данных вы увидите панель управления ниже. У нас есть база данных с пустыми коллекциями.
Давайте вставим первый документ в коллекцию, нажав кнопку insert document
Подключитесь к Mongo Compass
Мы видели три способа подключения к этому кластеру и чтения коллекций. Давайте подключимся к базе данных с помощью Mongo Compass. Первое, что нам нужно сделать, это загрузить и установить Mongo Compass по этой ссылке.
Давайте возьмем строку подключения из панели управления Atlas, как показано ниже.
Замените пароль своим паролем, который вы создали выше.
Давайте подключимся к базе данных с помощью строки подключения
Фактически вы можете увидеть ту же коллекцию в MongoDB Compass.
Настроить приложение Mongo In Express
Давайте настроим клиент Mongo из нашего приложения. Первое, что нам нужно сделать, это получить строку подключения.
Убедитесь, что вы выбрали правильный язык и версию драйвера MongoDB.
Поместим строку подключения и имя базы данных в файл свойств приложения, как показано ниже. Вы должны URL-кодировать пароль, если у вас есть какие-либо специальные символы в пароле.
Нам нужно использовать библиотеку dotenv для вещей, специфичных для среды. Dotenv - это модуль с нулевой зависимостью, который загружает переменные среды из файла .env
в process.env
. Хранение конфигурации в среде отдельно от кода основано на методологии Двенадцатифакторного приложения.
Первый шаг - установить эту библиотеку npm install dotenv
и поместить файл .env в корневую папку проекта.
Нам просто нужно поместить эту строку require('dotenv').config()
как можно раньше в код приложения, как в файл server.js.
Давайте определим класс конфигурации, в котором он создает соединение со строкой подключения, которую мы только что скопировали из панели инструментов Atlas. Мы используем Mongoose для подключения к MongoDB для всех запросов. Mongoose упрощает взаимодействие с MongoDB. Мы получаем строку подключения Mongo с помощью библиотеки dotenv и подключаем ее к MongoDB с помощью Mongoose. Мы показываем две функции из этого файла: подключение и отключение.
Нам нужно определить модель для нашей коллекции в MongoDB, как показано ниже. Нам нужно определить схему для коллекции, а затем вам нужно передать эту схему в модель и экспортировать ее как модуль.
Наконец, вот класс репозитория, в котором он использует указанную выше модель для всех операций CRUD.
У нас есть этот служебный файл между контроллером и репозиторием для любых манипуляций с данными, если это необходимо.
Со всеми указанными выше файлами мы можем перейти по следующему URL-адресу.
https://localhost:3081/api/tasks
CRUD Операции
Давайте проделаем несколько CRUD-операций.
Создать задачу
Создание задачи - это пост-вызов, который принимает тело запроса и сохраняет его в коллекцию задач.
URL: https://localhost:3081/api/task Request Body: { "task" : {"name": "asdassad", "description": "description 34 i sdescription!!", "createdBy": "user" } }
Обновить задачу
Задача обновления - это вызов put, который принимает тело запроса и обновляет его в коллекцию задач с тем же идентификатором.
URL: https://localhost:3081/api/task Request Body: { "task" : { "_id": "600262cbd112101aa209f424", "name": "name 1", "description": "description 1 ", "updatedBy": "user" } }
Удалить задачу
Удалить задачу - это вызов удаления, который принимает идентификатор в качестве переменной пути и удаляет его из коллекции задач.
URL: https://localhost:3081/api/task/60026294d112101aa209f423
Получить задачи
Получить задачи - это простой URL-адрес GET, который извлекает все задачи из коллекции задач.
URL: https://localhost:3081/api/tasks
Ведение журнала
Существует так много библиотек логгеров, и я использовал для логирования сосновую библиотеку. Всегда лучше иметь отдельный файл для ведения журнала и импорта этого файла повсюду. Вы можете настроить и изменить базовую библиотеку ведения журнала с помощью одного изменения файла.
Я определил следующий файл.
Вы можете импортировать это в любой файл, как показано ниже, и использовать эти методы.
Чванство
Swagger - это инструмент, который упрощает документацию API для сервисов. С Swagger вы можете легко разработать свой API и поделиться им между командами.
Первое, что нам нужно сделать, это установить зависимости, связанные с swagger, с помощью следующей команды.
npm install swagger-ui-express swagger-jsdoc --save
Перед внедрением документации swagger в свой REST API необходимо понять две вещи.
Swagger.json
Первым делом нужно добавить файл swagger.json
для определения операций. Вы можете определить схемы для объектов запроса и ответа, вы можете определить в параметрах, теле и описании каждой операции Http и т. Д.
Пользовательские CSS
У вас может быть собственный CSS для документации Rest API. Вам необходимо определить файл swagger.css, в который вы можете поместить весь свой CSS, который можно применить к странице Swagger.
Когда у вас есть эти файлы swagger.json
и swagger.css
, пора добавить код, связанный с чванством, в server.js.
// import library and files const swaggerUi = require('swagger-ui-express'); const swaggerDocument = require('./swagger.json'); const customCss = fs.readFileSync((process.cwd()+"/swagger.css"), 'utf8'); // let express to use this app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument, {customCss}));
Вот полный файл server.js
Вы можете запустить проект в среде разработки с помощью следующей команды и получить доступ к
// start the project npm run dev // Access the swaggger docs here https://localhost:3081/api-docs/#/
Резюме
- REST - это аббревиатура от REpresentational State Transfer. Rest следует некоторым рекомендациям для облегчения связи между системами.
- Ядром MongoDB Cloud является MongoDB Atlas, полностью управляемая облачная база данных для современных приложений. Атлас - лучший способ запустить MongoDB, ведущую современную базу данных.
- Вы можете войти в систему со своей учетной записью Google, и вы можете создавать кластеры и базы данных.
- Вы можете подключиться к кластеру тремя способами: Mongo Shell, MongoDB Compass и через приложение.
- Вы можете получить строку подключения и настроить приложение NodeJS для взаимодействия с MongoDB с помощью Mongoose и т. Д.
- Swagger - это инструмент, который упрощает документацию API для сервисов. С Swagger вы можете легко разработать свой API и поделиться им между командами.
Заключение
Мы видели, как настроить MongoDatabase и настроить ее в NodeJS API. В будущих публикациях мы увидим, как Dockerize и разместить этот API в облаке и многое другое.