Безопасный REST API сервис для управления файлами с поддержкой аутентификации через JWT, который позволяет пользователям регистрироваться, авторизоваться, обновлять токены и выполнять операции с файлами.
- Аутентификация и авторизация: Регистрация, Авторизация, Удаления токена, Обновления токена.
- Работа с файлами: Загрузка, скачивание, обновление и удаление файлов с сохранением информации о каждом файле.
- Backend: Node.js
- База данных: MySQL
- Библиотеки: Express.js, Prisma, Multer, jsonwebtoken, Bcrypt
Названия директорию | Описание |
---|---|
domain |
Бизнес-сущности и интерфейсы |
application |
Use cases и бизнес-логика |
infrastructure |
Реализации Server, Database, Cache, Logger, IoC |
adapters |
Контроллеры / Презентеры |
config |
Конфиги который берутся из .env |
Метод | Путь | Описание |
---|---|---|
POST | /signin |
Получение JWT-токена по userId и password . |
POST | /signin/update_token |
Обновление JWT-токена по refresh-token. |
POST | /signup |
Регистрация нового пользователя. |
GET | /info |
Получение информации о текущем пользователе. |
GET | /logout |
Выход из системы, блокировка текущего токена. |
Метод | Путь | Описание |
---|---|---|
POST | /file/upload |
Загрузка файла, сохранение его параметров в базу данных. |
GET | /file/list |
Получение списка файлов с параметрами, поддержка пагинации. |
DELETE | /file/delete |
Удаление файла из базы данных и локального хранилища. |
GET | /file/ |
Получение информации о выбранном файле. |
GET | /file/download |
Скачивание файла. |
PUT | /file/update |
Обновление файла в базе и локальном хранилище. |
Для удобства работы с API вы можете использовать коллекцию Postman, которая включает все указанные выше эндпоинты и примеры запросов.
git clone https://github.com/username/file-storage-service.git
cd file-storage-service
npm install
Создайте файл .env
, скопировав и переименовав .env.example
, и заполните его необходимыми значениями:
Названия | Тип | Пример | Описание |
---|---|---|---|
SERVER_HOST |
STRING |
127.0.0.1 |
Хост сервера |
SERVER_PORT |
NUMBER |
3000 |
Порт сервера |
SERVER_CORS_ORIGIN |
STRING |
https://example.com |
Разрешенные источники для CORS (можно указать "*" для всех) |
DATABASE_URL |
STRING |
mysql://user:pass@host/db |
URL подключения к MySQL базе данных через Prisma |
USER_PASSWORD_SALT_LENGTH |
NUMBER |
8 |
Длина соли для хеширования пароля |
USER_JWT_REFRESH_SECRET |
STRING |
your_jwt_secret |
Секретный ключ для подписи JWT refresh токенов |
USER_JWT_ACCESS_EXPIRATION |
STRING |
600s |
Время жизни access токена (10 минут = 600 секунд) |
USER_JWT_REFRESH_EXPIRATION |
STRING |
7d |
Время жизни refresh токена (7 дней) |
FILE_STORAGE_PATH |
STRING |
/tmp |
Путь для хранения файлов |
# Создание и применение миграций
npx prisma migrate dev
# Генерация Prisma Client
npx prisma generate
npm run dev
Для сборки и запуска приложения в продакшн окружении:
npm run build
npm start