tl; dr - Это первая статья из серии статей Node is Simple. В этой серии статей я расскажу, как создать простое и безопасное веб-приложение на NodeJS, Express, MongoDB.

Прежде всего позвольте мне поблагодарить JavaScript, которому в этом году исполнится 25 лет. Без JavaScript мир действительно был бы намного темнее. 😁 В этой серии статей я собираюсь создать API с NodeJS, ExpressJS и MongoDB. Я знаю, что существует огромное количество руководств, описывающих, как создать API с этими технологиями, но дело в том, что я никогда не находил очень исчерпывающего учебника все в одном, в котором вы бы познакомились со следующими вещами.

  1. Настройка базового веб-приложения NodeJS, Express с SSL / TLS.
  2. Настройка ESLint в любимом редакторе или IDE.
  3. Добавление MongoDB в качестве базы данных.
  4. Создание базовых конечных точек CRUD и тестирование с помощью Почтальона.
  5. Загрузка файлов и их просмотр с помощью MongoDB GridFS.
  6. Создание собственного промежуточного программного обеспечения с помощью Express.
  7. Добавьте ведение журнала для веб-приложения.
  8. Защита конечных точек с помощью аутентификации JWT.
  9. Проверка ввода с помощью @ Hapi / Joi.
  10. Добавление документации OpenAPI Swagger.
  11. Кеширование ответов с помощью Redis.
  12. Балансировка нагрузки с помощью PM2.
  13. Тестирование API с помощью Чай, Мокко.
  14. Создайте конвейер CI / CD.
  15. Развертывание на любимой платформе.

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

Поскольку это руководство представляет собой серию статей, я не собираюсь делать его длинным; скучно читать один. В этой первой статье я опишу, как настроить простое приложение NodeJS и Express с SSL / TLS. Только это, ничего больше.

На ноги, солдат, мы начинаем.

Прежде всего, давайте создадим структуру папок нашего веб-приложения.

Как показано на рисунке 1, вам необходимо создать папки и файл index.js. Если вы используете Linux или Git Bash в Windows, давайте создадим для этого простой скрипт. Так что вам не придется делать это снова, когда вам нужно будет создать другое приложение. (Мы такие ленивые, правда?)

Пройдем через это еще раз.

Во-первых, вам нужно создать папку для вашего проекта, запустить npm init и инициализировать ваше приложение. С его помощью вы можете указать отличное имя для своего проекта, вашу предпочтительную лицензию и многое другое. Ах, я просто забыл. Вам необходимо проверить, установлена ​​ли на вашем компьютере текущая версия Node и NPM. Надеюсь, вы знаете, как установить NodeJS на свой компьютер. Если нет, перейдите по следующим ссылкам.





После этого просто запустите этот сценарий bash bootstrap.sh внутри папки проекта, и он создаст простое приложение Node Express. Так просто, правда?

После создания необходимой структуры папок приступим к настройке приложения Express. Перейдем к файлу index.js в корневой папке и добавим эти строки.

Пока не запускайте это, так как мы еще ничего не сделали. Я знаю, что это уже перебор, просто потерпи, я все объясню. Что мы делаем здесь, сначала мы создаем HTTP-сервер, а затем мы создаем HTTPS-сервер. Затем мы перенаправляем весь HTTP-трафик на HTTPS-сервер. Прежде всего, нам нужно создать сертификаты для использования внутри HTTPS-сервера. Это немного больно, но оно того стоит. Это хороший ресурс о создании сертификатов SSL для вашего Node-приложения.



Я немного ленив, поэтому просто сгенерирую файлы server.cert и server.key по этой ссылке.



Внутри ввода имени сервера вам просто нужно указать свое доменное имя. Для этого я буду использовать localhost в качестве имени домена.

После создания файлов * .cert и * .key скопируйте их в папку / config. И переименуйте их в server.cert и server.key.

Теперь давайте импортируем сертификаты и сделаем их полезными. Внутри папки / config создайте файл index.js и добавьте эти строки.

Все-таки не все так просто, правда? Ну что ж, посмотрим.

Теперь, когда мы настроили сертификаты, давайте создадим простой контроллер (конечную точку) для нашего приложения и проверим его. Сначала перейдем к папке / controllers и создадим файл index.js. Внутри добавьте следующие строки.

asyncWrapper что это ???

Позвольте мне рассказать вам об этом. Async Wrapper - это функция-оболочка, которая перехватывает все ошибки, возникающие внутри вашего кода, и возвращает их промежуточному программному обеспечению обработки ошибок. Я объясню это немного подробнее, когда буду обсуждать промежуточное программное обеспечение Express. Теперь давайте создадим этот печально известный asyncWrapper. Перейдите в папку / utilities и создайте два следующих файла.

async-wrapper.js

async.wrapper.d.ts (файл определения типа асинхронной оболочки)

Мы сделали это, ребята, мы сделали это. Теперь давайте посмотрим, как работает это красивое приложение Express. Давайте сначала запустим веб-приложение. Заходим в папку проекта и в терминале (или Git Bash в Windows) запускаем следующую строку.

узел index.js

После этого давайте запустим ваш любимый браузер (у меня Chrome 😁) и подключимся к конечной точке,

Https: // localhost: 8081 /

Не беспокойтесь, если ваш браузер сообщает, что переход по этому URL небезопасен. Вы доверяете себе, не так ли? Так что давайте возьмем на себя риск и продолжим.

Теперь, если вы видите что-то подобное,

Вы успешно создали приложение NodeJS, Express. Кроме того, поскольку мы настроили HTTP-сервер, вы также можете попробовать этот URL.

Http: // localhost: 8080 /

Если вы перейдете по этому URL, вы увидите, что будете перенаправлены на

Https: // localhost: 8081 /

Вот и все волшебство с нашим приложением Express. Круто, правда? Итак, это все для этого урока. В следующем руководстве я расскажу вам все о добавлении MongoDB в качестве базы данных.



Это репозиторий GitHub для этого руководства, и я буду обновлять его по мере роста объема учебника. Проверьте сообщения фиксации для моментального снимка репо для конкретного учебника. Если у вас есть какие-либо вопросы, не забудьте написать мне в любой социальной сети, как показано на моем веб-сайте.



Итак, пока мы снова не встретимся со второй частью этой серии руководств, удачного кодирования ...