Средний ~20 мин чтения

Что такое REST и его принципы

Урок 1 из 5 в курсе Проектирование REST API

Что такое REST и его принципы

REST — архитектурный стиль для создания распределённых систем на основе стандартных HTTP-механизмов.

Почему это важно: REST — доминирующий подход к созданию веб-API. Без понимания его принципов легко создать псевдо-REST API с непредсказуемым поведением.

Главная идея

REST задаёт набор ограничений (constraints), а не протокол. Клиент и сервер независимы, взаимодействие stateless, ресурсы адресуемы через URL.

Как это выглядит на практике

  1. Клиент обращается к /users — это ресурс 'пользователи'.
  2. GET /users — получить список, POST /users — создать нового.
  3. Сервер не хранит состояние клиента между запросами — каждый запрос самодостаточен.
  4. Ответ содержит данные и метаданные (статус, заголовки), которые клиент интерпретирует самостоятельно.

Что происходит под капотом

  • 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 является наиболее распространённой реализацией.

Термины урока

REST: Representational State Transfer — архитектурный стиль.
Resource: именованная абстракция (пользователь, заказ, статья).
Representation: конкретное представление ресурса (JSON, XML, HTML).
Stateless: каждый запрос самодостаточен и не зависит от предыдущих.

Связь с работой backend-разработчика

REST — не религия, а прагматичный набор соглашений. Важно знать принципы, чтобы принимать осознанные отступления от них, а не случайные.

Мини-разбор реальной ситуации

API интернет-магазина: /getProducts и /createProduct — не REST. Правильный вариант: GET /products и POST /products. Использование HTTP-методов вместо глаголов в URL делает API предсказуемым для любого клиента.

Что запомнить

  • REST — ограничения, а не протокол.
  • Ресурс — ключевое понятие; URL идентифицирует ресурс, метод — действие.
  • Stateless: сервер не помнит клиента между запросами.

Итог

Понимание принципов REST позволяет проектировать API, которые предсказуемы, масштабируемы и легко интегрируются с любыми клиентами.