Этот проект представляет собой улучшенный Express.js backend согласно требованиям преподавателя. Реализованы мидлвары, CRUD операции для постов (или товаров/новостей), разбиение на сервисы для работы с базой данных и фронтенд для тестирования API.
- authMiddleware (
middleware/auth.js): Проверяет JWT-токен для защищенных роутов. Без валидного токена доступ к CRUD операциям запрещен.
- Реализован полный CRUD для сущности "Post" (можно адаптировать под товары или новости).
- Только авторизованные пользователи могут выполнять операции: создание, чтение, обновление, удаление.
- Пользователи могут управлять только своими постами (проверка
userId).
- userService.js: Обработка регистрации и логина (хэширование паролей, генерация JWT).
- postService.js: Все операции с постами (создание, получение, обновление, удаление) с взаимодействием с MongoDB.
- Веб-интерфейс (
public/index.htmlиscript.js) для тестирования API. - Документация эндпоинтов (
api-docs.md). - Фронтенд умеет регистрировать/логинить пользователей и управлять постами.
express-backend/
├── middleware/
│ └── auth.js # Мидлвар аутентификации
├── models/
│ ├── User.js # Модель пользователя
│ └── Post.js # Модель поста
├── routes/
│ ├── auth.js # Роуты аутентификации
│ └── posts.js # Роуты постов
├── services/
│ ├── userService.js # Сервис пользователей
│ └── postService.js # Сервис постов
├── public/
│ ├── index.html # Фронтенд интерфейс
│ └── script.js # JS для взаимодействия с API
├── api-docs.md # Документация API
├── index.js # Главный файл сервера
├── package.json # Зависимости
└── README.md # Этот файл
-
Установите зависимости:
npm install
-
Установите и запустите MongoDB:
brew install mongodb-community brew services start mongodb/brew/mongodb-community
-
Запустите сервер:
npm run dev
Сервер будет доступен на
http://localhost:3000. -
Тестирование:
- Фронтенд:
http://localhost:3000/index.html - API документация:
api-docs.md
- Фронтенд:
POST /auth/register- РегистрацияPOST /auth/login- Логин (возвращает JWT)
GET /posts- Получить все постыGET /posts/:id- Получить пост по IDPOST /posts- Создать постPUT /posts/:id- Обновить постDELETE /posts/:id- Удалить пост
- Node.js, Express.js
- MongoDB, Mongoose
- JWT для аутентификации
- bcryptjs для хэширования паролей
- CORS для кросс-доменных запросов
- Мидлвары: Реализованы для защиты роутов.
- CRUD с авторизацией: Только авторизованные пользователи, свои данные.
- Services: Логика БД в отдельных сервисах.
- Фронт знает эндпоинты: Интерфейс и документация предоставлены.