
Что такое API?
Набор функций и процедур, позволяющих создавать приложения, которые получают доступ к функциям или данным операционной системы, приложения или другой службы. Проще говоря, API - это сервер, который создает HTTP-интерфейс для взаимодействия с данными.
Обычно он обслуживается на удаленном компьютере, который определяет, как приложение может взаимодействовать с данными. Основные операции, такие как создание, чтение, обновление, удаление.
А как же отдых?
Это самый популярный шаблон проектирования API. REST популярен благодаря своей простоте и тому факту, что он основан на существующих системах и функциях HTTP в Интернете для достижения своих целей, а не на создании новых стандартов, структур и технологий.
Дизайн API, который объединяет ресурсы БД, пути маршрутов и HTTP-команды, чтобы позволить приложениям описывать, какое действие они пытаются выполнить.
Он стал более популярным, когда продукты SaaS открыли API для интеграции для своих клиентов. Легко работать с базовыми моделями данных, но сложно масштабировать со сложными моделями данных и соответствующими требованиями.
Node.js, Express и MongoDB

Node.js - это, конечно, JavaScript, он асинхронный, управляемый событиями и однопоточный (но его можно оптимизировать). В асинхронном режиме Node может обрабатывать большое количество одновременных запросов. Не рекомендуется для работы с интенсивным использованием ЦП, такой как обработка данных, машинное обучение, математика и т. Д.
Express - это стандартный фреймворк API для node.js. Это открытый исходный код, огромное сообщество и поддержка всего, что связано с API в Node. Express здесь, чтобы оставаться с обновлениями версий, стабильностью, и его очень легко использовать и внедрять.
MongoDB в нереляционной базе данных, которая работает как мечта в node.js. Он хранит нереляционные документы / данные, которые легко начать, а также хорошо масштабируются. Это открытый исходный код, который широко используется во всем мире. Он поддерживает как ORM (Object Relational Mapper), который отображает отношения между данными, так и ODM (Object Document Mapper), который имеет дело с документами. MongoDB хранит данные в гибких, похожих на JSON документах, то есть поля могут варьироваться от документа к документу, а структура данных может изменяться с течением времени.
Настройка кода
Нам необходимо настроить и установить необходимые зависимости и модули для правильной работы приложения. Мы также будем создавать API, и очевидно, что нужна база данных. Мы используем MongoDB, базу данных NOSQL. Это оптимальный выбор для наших нужд, поскольку нам не нужна реляционная база данных. Сейчас мы будем устанавливать и запускать его локально. Посетите Руководство по установке MongoDB, чтобы установить БД для другого типа машины (Linux, Mac).
Поскольку все написано на JavaScript, мы будем писать код в стандарте кодирования ES6. Мы также будем использовать Babel, компилятор JavaScript, который компилирует код в удобочитаемый стандарт браузера. Наряду с Babel мы используем ESLint, анализатор кода для управления и организации нашей базы кода для поиска и исправления проблемных шаблонов кода. Nodemon для отслеживания изменений файла, если в нем есть какие-либо изменения, чтобы нам не приходилось перезапускать сервер при каждом изменении. Мы также будем использовать промежуточное ПО, такое как body-parser, cors, dotenv, morgan для связи между узлами. Lodash как служебная библиотека, jsonwebtoken для авторизации токенов для запросов API.
Ниже показано, как package.json должен выглядеть со всеми зависимостями.
Мы также использовали мангуста. Mongoose - это библиотека моделирования объектных данных (ODM) для MongoDB и Node.js. Он управляет отношениями между данными, обеспечивает проверку схемы и используется для преобразования между объектами в коде и представлением этих объектов в MongoDB.
Теперь давайте настроим babel, eslint и nodemon для приложения.
Создайте файл .babelrc, .eslintrc.js и nodemon.json со следующей конфигурацией.
Работа в приложении
Теперь у нас все настроено, и все зависимости готовы и установлены, давайте продолжим и создадим папку src внутри каталога и создадим файл с именем server.js.
In server.js
Теперь, когда у нас есть server.js , давайте запустим команду ниже, которая компилирует файл server.js в формат, читаемый браузером.
yarn dev

На данный момент у нас есть скелет для сервера. Теперь мы создадим конечную точку на сервере, работающем на порту 8081 (http://localhost:8081).
Теперь, в src/server.js
Теперь давайте перезапустим сервер и зайдем на http://localhost:8081/api. Мы должны видеть данные в формате JSON.

Теперь, когда мы настроили сервер с образцом маршрута. Давайте настроим MongoDB в приложении с помощью mongoose для выполнения реальных вызовов API.
Давайте создадим database.js файл в папке src и напишем код подключения mongodb.
Здесь мы используем useNewUrlParser, мы можем изменить useNewUrlParser на false, он работает, но показывает предупреждение об устаревании:
(node: 11481) DeprecationWarning: текущий синтаксический анализатор строки URL устарел и будет удален в будущей версии. Чтобы использовать новый синтаксический анализатор, передайте параметр { useNewUrlParser: true } в MongoClient.connect.
Теперь, когда соединение установлено, давайте перейдем к реальным действиям и создадим ресурсы для действий CRUD.
- C - model.create (), новая модель ()
- R - model.find (), model.findOne (), model.findById ()
- U - model.update (), model.findByIdAndUpdate (), model.findOneAndUpdate ()
- D - model.remove (), model.findByIdAndUpdate (), model.findOneAndRemove ()
Здесь мы будем создавать список действий CRUD. Но прежде чем мы начнем создавать листинговый ресурс, давайте создадим общие / используемые функции CRUD, мы назовем его crud.js внутри src папки.
Теперь у нас есть функция общего контроллера crud. Итак, в папке src можно создать вложенную папку с именем sources, в которой есть папка с именем listing с файлами listing.model.js, listing.router.js и listing.controller.js. Здесь мы будем создавать некоторые листинговые ресурсы.
Примечание. Атрибут name здесь уникален, поэтому передача повторяющегося имени вызовет ошибку.
Здесь мы видим, что схема создается в модели листинга, которая принимает имена и описание, контроллер с функциями crud и, наконец, маршрутизатор с запросом crud. Теперь, если мы попытаемся запустить код, он потерпит неудачу, очевидно, не удастся, почему? Потому что все грубые функции в crud.js пусты с пустыми функциями. Нам нужно выполнить это, прежде чем пытаться выполнить какую-либо операцию. В crud.js можно включить следующий код.
Теперь, когда у нас есть контроллер crud, все, что нам нужно сделать, это подключить его к серверу. Раньше нам просто нужен фиктивный маршрут в файле server.js. Давайте удалим этот фиктивный маршрут и разместим на сервере листинговый маршрутизатор вместе с соединением с mongodb.
In server.js
Запустим сервер yarn dev.
Теперь, когда приложение готово к тестированию. Давайте проведем тестирование api. Для этого мы можем использовать некоторые инструменты внешней среды разработки API, такие как почтальон или бессонница. Я лично использую бессонницу, поскольку он очень легкий и простой в использовании, но выбор инструмента для API зависит от вас.
Давайте сделаем запрос get в api pointhttp://localhost:8081/api/listing в приложении insomnia.

Точно так же давайте сделаем запрос post в той же точке API. Примечание. имя должно быть уникальным.

Точно так же мы также можем найти, обновить и удалить запись с помощью идентификатора, который имеет ключ “_id”. Здесь идентификатор указанного выше почтового запроса - ‘5ce8f0b95fc20462a3fa0d0f’. Таким образом, операция CRUD будет иметь конечную точку, например:
- Прочтите:
http://localhost:8081/api/listing/5ce8f0b95fc20462a3fa0d0f. Это будетgetзапрос. - Обновление: url конечной точки совпадает с прочитанным, но запрос будет
putс некоторыми обновленными данными тела JSON.{
“name”: “this is the updated name “,
“description”: “updated description for sample”,
“status”: “complete”
} - Удалить: url конечной точки совпадает с прочитанным, запрос будет
delete
Вы можете попробовать и увидеть результат. #happyCoding
Заключение
Это базовый API, который мы можем установить в node.js с помощью express и mongodb. В коде есть некоторые недостатки, такие как обработка исключения, если есть ошибка в вызовах API, но это код для другого дня.
В следующей главе мы проведем некоторую интеграцию. Мы будем интегрировать api с React вместе с аутентификацией с использованием jsonwebtoken. Мы также рассмотрим несколько тестовых примеров, используя jest. И, если возможно, развертывание докеров в облаке.
Надеюсь, вам coder понравилось это читать так же, как мне понравилось это писать. Из-за любопытства это, безусловно, очень помогло мне вырасти как инженера.
Так что вы думаете об этом сообщении в блоге? Поможет ли это другим? Не стесняйтесь оставлять отзывы, а также делиться лайками. Просто нажмите хлопать ниже, чтобы другие люди это увидели (было бы неплохо сделать 50 хлопков в ладоши 😉 ).
Я хотел бы поблагодарить моего наставника Ашиса Рая за то, что он меня вдохновляет и всегда держит меня в курсе.
Мир ✌️
Ссылка на Github: https://github.com/ramanamatya/api-design-node