🔌 Этап 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-сообщений, это абсолютная база).