🔌 Этап 6: REST API, аутентификация и авторизация

🔌 Этап 6: REST API, аутентификация и авторизация


Мы написали фронтенд и подняли базу данных. Теперь их нужно связать. Браузер (клиент) и сервер общаются по сети, и для этого общения нужен четкий контракт.

🌐 1. REST API (правила общения)

REST — это архитектурный стиль. Он говорит: относись ко всему как к ресурсам (пользователи, посты, товары) и используй стандартные методы HTTP.

основные методы:

  • get — получить данные (например, список фильмов);
  • post — создать новую запись (регистрация юзера);
  • put или patch — обновить существующие данные;
  • delete — удалить запись.

формат обмена: обычно это JSON (строки и структуры, понятные любому языку).

статусы ответов:

  • 200 — все отлично;
  • 400 — ошибка в запросе клиента;
  • 401 — не аутентифицирован;
  • 403 — нет прав (запрещено);
  • 404 — не найдено;
  • 500 — сервер упал.

🔐 2. Аутентификация и авторизация

HTTP — протокол без состояния (stateless). Сервер по умолчанию не помнит, что вы логинились секунду назад. Ему нужно напоминать об этом при каждом запросе.

важно различать:

  • аутентификация отвечает на вопрос «кто ты?» (проверка логина и пароля);
  • авторизация отвечает на вопрос «что тебе можно?» (можешь ли ты удалить чужой пост).

как это решают:

  • JWT (json web token) — современный стандарт. вы отправляете логин и пароль, сервер проверяет их в базе и выдает подписанный токен (своеобразный пропуск). токен не зашифрован (его содержимое может прочитать кто угодно), но он защищен криптографической подписью от подделки;
  • сессии и куки — классический подход. сервер хранит идентификатор сессии у себя, а браузеру отдает cookie.

как выглядит запрос с токеном под капотом:

HTTP

GET /api/movies
Authorization: Bearer <твой_токен>

безопасность: хранить JWT в localStorage (как часто делают в туториалах) — плохая практика для реальных проектов из-за уязвимости к XSS-атакам. токены нужно прятать в HttpOnly cookies (их нельзя прочитать через javascript).

🛠 Инструменты и ресурсы:

  • postman или bruno (бесплатные программы для тестирования API без написания фронтенда);
  • jwt.io (официальный сайт для расшифровки и понимания структуры токенов);
  • mdn web docs (изучите раздел HTTP-сообщений, это абсолютная база).

Report Page