Что такое REST и его принципы
REST — архитектурный стиль для создания распределённых систем на основе стандартных HTTP-механизмов.
Почему это важно: REST — доминирующий подход к созданию веб-API. Без понимания его принципов легко создать псевдо-REST API с непредсказуемым поведением.
Главная идея
REST задаёт набор ограничений (constraints), а не протокол. Клиент и сервер независимы, взаимодействие stateless, ресурсы адресуемы через URL.
Как это выглядит на практике
- Клиент обращается к /users — это ресурс 'пользователи'.
- GET /users — получить список, POST /users — создать нового.
- Сервер не хранит состояние клиента между запросами — каждый запрос самодостаточен.
- Ответ содержит данные и метаданные (статус, заголовки), которые клиент интерпретирует самостоятельно.
Что происходит под капотом
- REST — это не стандарт, а набор архитектурных ограничений из диссертации Роя Филдинга (2000).
- Шесть ограничений REST: Client-Server, Stateless, Cacheable, Uniform Interface, Layered System, Code on Demand (опционально).
- Uniform Interface — ключевое ограничение: идентификация ресурсов через URI, манипуляция через представления, самоописывающие сообщения.
- Большинство современных API не являются полностью REST (уровень 2 по Richardson Maturity Model) — и это нормально.
Типичные ошибки и заблуждения
- Ошибка: любой HTTP API — это REST. REST требует соблюдения конкретных ограничений.
- Ошибка: REST и JSON — одно и то же. REST — архитектурный стиль; JSON — лишь один из форматов представления.
- Ошибка: REST лучше GraphQL всегда. Оба имеют свои сценарии применения.
- Ошибка: CRUD и REST — синонимы. REST описывает ресурсы и действия над ними, а не только CRUD-операции.
Ключевые выводы
- REST — набор архитектурных ограничений, а не протокол или стандарт.
- Ключевые принципы: stateless, resource-based, uniform interface.
- Stateless означает, что сервер не хранит сессионное состояние клиента.
- REST не привязан к JSON или HTTP — хотя HTTP является наиболее распространённой реализацией.
Термины урока
Связь с работой backend-разработчика
REST — не религия, а прагматичный набор соглашений. Важно знать принципы, чтобы принимать осознанные отступления от них, а не случайные.
Мини-разбор реальной ситуации
API интернет-магазина: /getProducts и /createProduct — не REST. Правильный вариант: GET /products и POST /products. Использование HTTP-методов вместо глаголов в URL делает API предсказуемым для любого клиента.
Что запомнить
- REST — ограничения, а не протокол.
- Ресурс — ключевое понятие; URL идентифицирует ресурс, метод — действие.
- Stateless: сервер не помнит клиента между запросами.
Итог
Понимание принципов REST позволяет проектировать API, которые предсказуемы, масштабируемы и легко интегрируются с любыми клиентами.