Что такое REST API
Что такое REST API
Введение
Скорее всего, ты уже слышал слово «REST API». Это самый распространённый способ организации веб-API сегодня. Но REST — это не протокол и не технология, а архитектурный стиль — набор принципов, которым должен следовать API, чтобы называться RESTful.
REST: расшифровка и суть
REST = Representational State Transfer (передача представления состояния).
Термин придумал Roy Fielding в 2000 году в своей диссертации. Идея простая: клиент и сервер обмениваются представлениями ресурсов (например, JSON-объектами) через стандартный протокол HTTP.
6 ограничений REST
Fielding описал 6 принципов (constraints), которым должна следовать RESTful архитектура:
| Принцип | Суть |
|---|---|
| Client-Server | Клиент и сервер разделены и независимы |
| Stateless | Каждый запрос содержит всю нужную информацию; сервер не хранит состояние клиента |
| Cacheable | Ответы должны указывать, можно ли их кешировать |
| Uniform Interface | Единый интерфейс взаимодействия (HTTP-методы, URL-ресурсы) |
| Layered System | Клиент не знает, говорит ли он с конечным сервером или прокси |
| Code on Demand | Сервер может отправлять исполняемый код (опционально, редко используется) |
Для тестировщика самые важные: Stateless и Uniform Interface.
Именование ресурсов в REST
RESTful API строится вокруг ресурсов (существительных), а не действий (глаголов).
Правильно:
GET /users — список пользователей
GET /users/42 — пользователь с id=42
POST /users — создать пользователя
PUT /users/42 — обновить пользователя
DELETE /users/42 — удалить пользователя
GET /users/42/orders — заказы пользователя
Неправильно (не REST):
GET /getUsers
POST /createUser
GET /deleteUser?id=42
POST /getUserOrders
Правила именования:
- Существительные, не глаголы:
/usersне/getUsers. - Множественное число:
/users,/orders,/products. - Иерархия через слэш:
/users/42/orders/15. - Строчные буквы, дефисы (не underscore):
/user-profilesне/user_profiles.
REST vs другие API-стили
| Стиль | Суть | Когда встречается |
|---|---|---|
| REST | Ресурсы + HTTP-методы | Большинство современных API |
| SOAP | XML-сообщения, строгий контракт (WSDL) | Банки, устаревшие enterprise-системы |
| GraphQL | Клиент сам определяет структуру запроса | Facebook, GitHub API v4 |
| gRPC | Бинарный протокол, высокая скорость | Микросервисы, внутренние системы |
Как понять, что API RESTful?
Чек-лист тестировщика:
- URL содержит существительные, не глаголы.
- Используются правильные HTTP-методы (GET для чтения, POST для создания и т. д.).
- Каждый запрос самодостаточен (не зависит от предыдущих запросов).
- Коды ответов соответствуют ситуации (201 при создании, 404 при отсутствии).
- Ответ в JSON (или другом стандартном формате).
Частые ошибки тестировщиков
- Считать REST протоколом. REST — архитектурный стиль, HTTP — протокол.
- Игнорировать именование URL. Неправильные URL — это нарушение контракта API.
- Путать REST и HTTP. REST API почти всегда использует HTTP, но HTTP можно использовать и без REST.
Что мы запомним
- REST — архитектурный стиль, не протокол и не технология.
- Ключевые принципы: Stateless (без состояния) и Uniform Interface (единый интерфейс).
- URL в REST — это ресурсы (существительные):
/users,/orders/42. - HTTP-методы определяют действие: GET = читать, POST = создать, PUT/PATCH = обновить, DELETE = удалить.
- REST — самый популярный стиль API, но есть и альтернативы: SOAP, GraphQL, gRPC.