Skip to content

Дипломный проект факультета веб-разработки Яndex.Практикум. Backend.

License

Notifications You must be signed in to change notification settings

kspshnik/movies-server

Repository files navigation

movies-server

###Дипломный проект факультета веб-разработки Яndex.Практикум. ####( 18 поток, группа 18-sienna )

Backend. Серверная часть.

Сервер размещён на личной VDS по адресу api.kspshnik.xyz/movies, ip [176.113.82.177] (https://176.113.82.177). Дополнительную безопасность работы с API обеспечивает применение протокола https: c использованием выпущенного Let's Encrypt! сертификата SSL, но возможна и работа по незащищённому соединению по протоколу http:.

Структура проекта

/routes — папка с файлами роутеров
/helpers — функции-хелперы, вынесенные ради понятности и DRY
/controllers — папка с контроллерами
/models — модели Mongoose
/errors — классы пользовательских ошибок
/joiSchemes— схемы Joi для валидации c помощью celebrate
/middlewars — промежуточные обработчики: авторизационная, обработка ошибок, пре-валидация, журналирование запросов и ошибок.

Запуск проекта

npm run start — запускает сервер
npm run dev — запускает сервер с hot-reload

Развёртывание и запуск

Для первичного развёртывания на сервере проводится клонирование из GitHub-репозитория, установка только необходимых для промышленной эксплуатации зависимостей. Запуск производится с помощью менеджера задач pm2, обеспечивающего бесперебойную работу и перезапуск сервера в случае ошибок. В дальнейшем при внесении изменений в кодовую базу используются размещённые в package.json скрипты, вытягивающие изменения из репозитория, с помощью rsync копируются в рабочий каталог проекта, и осуществляется перезапуск сервера.

Технологии

Сервер

Для создания сервера используется каркасная библиотека Express.js. Объявление и запуск сервера разделены на App.js и index.js соответственно. Маршрутизация запросов осуществляется с помощью express.Router()ов, которые размещаются в отдельных файлах и подключаются в единой точке: модуле server.js с помощью app.use(). Сам же главный роутер подключается в основной точке входа приложения. Там же осуществляется инициализация приложения и подключение защитных прмежуточных обработчиков: helmet, cors, санитайзеров, обеспечивающих проверку и обезвреживание вредоносного кода в теле и/или параметров запроса. Также в app.js подключены промежуточные обработчики для журналирования поступающих запросов. Внутри каждого роутера запросы распределяются по контроллерам, ответственным за получение данных и отправку ответа на запрос. Дополнительно создан контроллер ошибки 404, который используется в роутере для сообщения о неверном пути к ресурсу.

Статический анализ кода

В целях минимизации ошибок и повышения качества кода использовался статический анализ с помощью ESLint. За основу было взято руководство по стилю компании AirBnB (airbnb-config-base), расширенное и дополненное в соответствии с используемыми технологиями и инструментарием.

Форматирование и оформление

Для форматирования кода с одной стороны был использован .editorconfig, что при использовании соответствующего расширения IDE позволяет автоматически выполнять большинство требований по оформлению, переложив их на плечи IDE, с другой стороны в проекте как dev-dependency установлен Prettier, и подключён как правило ESLint, так что форматирование кода осуществлялось автоматически при каждом статическом анализе.

About

Дипломный проект факультета веб-разработки Яndex.Практикум. Backend.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published