Создание хорошо структурированного REST-API с помощью Node.J за считанные минуты

Как разработчики, как только идея приходит в голову, мы в основном теряем время с техническими частями. Когда дело доходит до кодирования, большинство разработчиков - перфекционисты. Однако трата времени на технические детали мешает нам выпустить наши MVP и приводит к потере энтузиазма и сосредоточенности на идее.

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

Стек технологий будет следующим:

  • Node.js - Node.js® - это среда выполнения JavaScript для серверной части!
  • ExpressJs - фреймворк для быстрого сетевого приложения node.js
  • MySQL - это система управления реляционными базами данных с открытым кодом. "Подробнее".
  • Jest - восхитительный фреймворк для тестирования JavaScript с упором на простоту.
  • Log4js - надежный инструмент для ведения логов для Node.js

Последняя версия протестирована на Node.js v11 +.

И следующие функции будут предоставлены сниппетом по умолчанию;

  • Конечные точки RESTful API с базовыми операциями CRUD
  • Маршрутизация
  • Тестовое задание
  • логирование
  • Проверка
  • Обработка ошибок
  • Асинхронный / Ожидание
  • Docker и связанные с ним конфигурации не встроены в этот репозиторий.

Проектные решения

Этот шаблон написан на ES6 +, кроме тестовых частей.

Принимая во внимание передовой опыт, все ошибки обрабатываются на уровне маршрутизации. Остальной код должен выдавать ошибки, даже если они обнаружены.

Ведение журнала осуществляется с помощью библиотеки log4.js, а соответствующие выходные данные хранятся в папке «log».

В этом проекте я использовал стиль обработки ошибок, аналогичный GoLang. Таким образом, каждый вызов async должен быть заключен в оболочку утилитой async-to-await, а ErrorHandler должен вызываться после каждого запроса, чтобы проверить, не возникла ли ошибка. регистрируется и обрабатывается или должен быть брошен.

Поскольку это обсуждается для шаблона MVC, в этом проекте мы использовали этот шаблон отдельно для каждой сущности. Сделав это, вы можете легко масштабировать связанную конечную точку, если это необходимо.

Учитывая простые проблемы безопасности (электронные книги на Amazon), API защищен библиотекой шлем и базовая аутентификация. См. файл config_manager.js, чтобы обновить свои учетные данные для базовой аутентификации и подключения к базе данных.

Настраивать

Начнем со скачивания фрагмента.

git clone https: //github.com/scetiner/api-template.git
cd api-template
npm install

Вот и все, но прежде чем углубляться в кодирование, нам нужно настроить нашу базу данных. Для этого посмотрите на следующую структуру вашего шаблона и найдите файл с именем «create_schema.sql». (Предлагается сохранять изменения в базе данных с учетом версий, но обратите внимание, что в этом шаблоне отсутствуют сценарии миграции базы данных)

Используйте этот сценарий SQL для создания схемы и исходного объекта образца, которым является ПОЛЬЗОВАТЕЛЬ.

Создание нашего первого API (User CRUD)

Создать конечную точку очень просто, используя следующий сценарий, определенный в package.json.

npm run api Пользователь

ВНИМАНИЕ: при именовании организации начинайте с заглавной буквы.

Проверьте вывод и дерево проекта и просмотрите созданные файлы для редактирования.

Хотя там написано «Зарегистрируйте свой маршрут…», это не обязательно для случая пользователя, потому что он уже зарегистрирован в качестве образца. Но не забудьте зарегистрировать следующие конечные точки.

Итак, у нас есть большая часть необходимого кода, но если вы попытаетесь запустить службу, вы получите следующую ошибку:

Этот фрагмент поможет вам справиться с похожими ошибками. Итак, мы должны реализовать схему пользователя в соответствии с таблицей SQL, которую мы создали ранее. Для этого просто очистите строки комментариев, удалите оператор throw, и пользовательская схема будет в порядке.

Попробуйте снова;

На этот раз вам следует исправить свои тесты. Поэтому проверьте связанный файл и снова очистите закомментированные строки и удалите операторы throw, которых на этот раз несколько.

См. Следующий код для окончательной версии.

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

Запустить сервис

Пока все хорошо ... Запустив проект, вы увидите свои зарегистрированные и доступные конечные точки.

Чтобы узнать больше о Node.js, я предлагаю следующую книгу, Шаблоны проектирования Node.js, которая также имеет издание Kindle.