Бэкенд приложения
Ссылка на Github-репозиторий с бэкендом проекта
Файловая структура
.gitignore
.editorconfig
.eslintrc
package.json
package-lock.json
API
Схемы и модели API-ресурсов
База данных содержит 2 сущности в формате JSON:
user
- зарегистрированный пользователь:
Поле | Описание | Валидация |
---|---|---|
Почта пользователя. Обязательное поле, уникальное значение. | Регулярное выражение | |
password | Хеш пароля пользователя. Обязательное поле, уникальное значение. | - |
name | Имя пользователя. Обязательное поле, неуникальное значение, 2-30 символов | - |
movie
- избранный фильм:
Поле | Описание | Значение | Обязательное поле |
---|---|---|---|
country | Страна создания фильма | string | да |
director | Режиссер фильма | string | да |
duration | Длительность фильма | number | да |
year | Год выпуска фильма | string | да |
description | Описание фильма | string | да |
image | Ссылка на постер к фильму | URL | да |
trailerLink | Ссылка на трейлер фильма | URL | да |
thumbnail | Иконка постера к фильму | URL | да |
owner | _id пользователя, добавившего фильм в избранное | - | да |
moeieId | id фильма | number | да |
nameRU | название фильма по-русски | string | да |
nameEN | название фильма по-английски | string | да |
Роуты и контроллеры
# возвращает информацию о пользователе (email и имя)
GET /users/me
# обновляет информацию о пользователе (email и имя)
PATCH /users/me
# возвращает все сохранённые текущим пользователем фильмы
GET /movies
# создаёт фильм с переданными в теле
# country, director, duration, year, description, image, trailer, nameRU, nameEN и thumbnail, movieId
POST /movies
# удаляет сохранённый фильм по id
DELETE /movies/_id
Контоллеры для каждого роута. Защита роута авторизацией: если пользовать не прислал JWT, доступ к роутам запрещен.
Аутентификация и авторизация
2 дополнительных роута для регистрации и логина
# создаёт пользователя с переданными в теле
# email, password и name
POST /signup
# проверяет переданные в теле почту и пароль
# и возвращает JWT
POST /signin
Защита роутов авторизацией не требуется.
Внимание: если сохранять JWT в cookies, то необходим дополнительный роут POST /signout
. При обращении к нему JWT удаляется из cookies.
Логирование
Файлы для хранения логов:
- request.log – хранит информацию обо всех обращениях к API;
- error.log – хранит информацию об обшибках, которые возвращает API.
Логи в формате JSON. Файлы логовор в Github-репозиторий не добавляются.
Деплой
Для размещения веб-приложения в сети необходимо:
- Создать сервер
- Обращение к API по публичному IP-адресу.
- Разместить сервер можно в Яндекс Облаке.
- Создать и прикрепить домен
- Зарегистрировать домен у любого регистратора доменных имен.
- Настроить DNS на стороне регистратора.
- API можно вынести на поддомен
api.*
или использовать префикс пути~/api/
.
- Установить SSL-протокол
- Выпустить и подключить SSL-сертификаты, чтобы обращаться к серверу по протоколу
https
.
- Создать
.env
-файл на сервере
Переменные окружения:
NODE_ENV=production
;JWT_SECRET
.
Внимание: проверить, что .env
-файл добавлен в .gitignore
и в репозиторий не публикуется.
Обновлено