Skip to content

Licoler/Express-backend-improvement

Repository files navigation

Express Backend с Аутентификацией и CRUD

Этот проект представляет собой улучшенный Express.js backend согласно требованиям преподавателя. Реализованы мидлвары, CRUD операции для постов (или товаров/новостей), разбиение на сервисы для работы с базой данных и фронтенд для тестирования API.

Требования и Реализация

1. Мидлвары

  • authMiddleware (middleware/auth.js): Проверяет JWT-токен для защищенных роутов. Без валидного токена доступ к CRUD операциям запрещен.

2. CRUD для постов/товаров/новостей

  • Реализован полный CRUD для сущности "Post" (можно адаптировать под товары или новости).
  • Только авторизованные пользователи могут выполнять операции: создание, чтение, обновление, удаление.
  • Пользователи могут управлять только своими постами (проверка userId).

3. Разбиение на Services

  • userService.js: Обработка регистрации и логина (хэширование паролей, генерация JWT).
  • postService.js: Все операции с постами (создание, получение, обновление, удаление) с взаимодействием с MongoDB.

4. Фронт знает эндпоинты

  • Веб-интерфейс (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                # Этот файл

Установка и Запуск

  1. Установите зависимости:

    npm install
  2. Установите и запустите MongoDB:

    brew install mongodb-community
    brew services start mongodb/brew/mongodb-community
  3. Запустите сервер:

    npm run dev

    Сервер будет доступен на http://localhost:3000.

  4. Тестирование:

    • Фронтенд: http://localhost:3000/index.html
    • API документация: api-docs.md

API Эндпоинты

Аутентификация

  • POST /auth/register - Регистрация
  • POST /auth/login - Логин (возвращает JWT)

Посты (требуют Authorization: Bearer )

  • GET /posts - Получить все посты
  • GET /posts/:id - Получить пост по ID
  • POST /posts - Создать пост
  • PUT /posts/:id - Обновить пост
  • DELETE /posts/:id - Удалить пост

Технологии

  • Node.js, Express.js
  • MongoDB, Mongoose
  • JWT для аутентификации
  • bcryptjs для хэширования паролей
  • CORS для кросс-доменных запросов

Соответствие требованиям

  • Мидлвары: Реализованы для защиты роутов.
  • CRUD с авторизацией: Только авторизованные пользователи, свои данные.
  • Services: Логика БД в отдельных сервисах.
  • Фронт знает эндпоинты: Интерфейс и документация предоставлены.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors