Что такое REST API простыми словами: принципы, методы и примеры
Методы HTTP, коды ответов, аутентификация, пагинация, версионирование — полное руководство с примерами запросов через curl и Postman.
, отредактировано
Вы наверняка сталкивались с REST API, даже если не знали об этом. Каждый раз, когда мобильное приложение загружает ленту новостей, а сайт показывает прогноз погоды — за кулисами работает именно REST API. Разберёмся, как устроена эта технология и почему она стала стандартом веб-разработки.
REST API (Representational State Transfer Application Programming Interface) — это архитектурный стиль взаимодействия между клиентом и сервером через протокол HTTP. Клиент отправляет запрос на определённый URL, а сервер возвращает данные — чаще всего в формате JSON. REST не является протоколом или стандартом: это набор архитектурных принципов, которым следует разработчик при проектировании API.
Ключевые выводы
— REST API — это архитектурный стиль, а не протокол. Он основан на 6 принципах, предложенных Роем Филдингом в 2000 году
— Для работы с ресурсами используются HTTP-методы: GET (чтение), POST (создание), PUT (обновление), DELETE (удаление)
— Каждый ресурс имеет уникальный URL — эндпоинт, к которому обращается клиент
— REST проще SOAP и гибче GraphQL — именно поэтому более 80% публичных API используют REST
— JSON не обязателен — REST может возвращать XML, HTML или даже обычный текст
Что означает REST — 6 принципов архитектуры
Термин REST ввёл Рой Филдинг в своей докторской диссертации в 2000 году. Он описал 6 архитектурных ограничений, которым должна соответствовать система, чтобы считаться RESTful.
- Клиент-сервер — клиент и сервер разделены. Клиент отвечает за интерфейс, сервер — за хранение данных и бизнес-логику. Это позволяет развивать их независимо
- Отсутствие состояния (Stateless) — каждый запрос содержит всю информацию, необходимую для его обработки. Сервер не хранит контекст между запросами
- Кэширование — ответы сервера могут быть помечены как кэшируемые. Это снижает нагрузку и ускоряет работу клиента
- Единообразный интерфейс — все ресурсы доступны через стандартные HTTP-методы и имеют предсказуемые URL. Это главное отличие REST от других подходов
- Многослойная архитектура — между клиентом и сервером могут находиться промежуточные слои: балансировщики, прокси, кэш-серверы. Клиент не знает, общается ли он напрямую с сервером
- Код по запросу (необязательно) — сервер может передавать клиенту исполняемый код, например JavaScript. Этот принцип — единственный необязательный из шести
HTTP-методы — GET, POST, PUT, DELETE
REST API использует стандартные HTTP-методы для операций над ресурсами. Каждый метод соответствует определённому действию — это называется CRUD (Create, Read, Update, Delete).
GET — получение данных
Запрашивает ресурс с сервера. Не изменяет данные — только читает.
Ответ сервера:
POST — создание ресурса
Создаёт новый ресурс на сервере. Данные передаются в теле запроса.
PUT — обновление ресурса
Полностью заменяет ресурс новыми данными. Если нужно обновить одно поле — используют PATCH.
DELETE — удаление ресурса
Удаляет ресурс с сервера.
Сервер обычно возвращает статус 204 No Content — данные удалены, тело ответа пустое.
Как выглядит REST API на практике — пример CRUD
Представим, что мы проектируем API для управления задачами (to-do list). Вот как будет выглядеть набор эндпоинтов:
Обратите внимание на структуру URL. Ресурс — это существительное во множественном числе (/tasks), а действие определяется HTTP-методом, а не URL. Именно поэтому /api/deleteTask — это плохой REST, а DELETE /api/tasks/1 — хороший.
Пример запроса на создание задачи и ответа сервера:
Сервер вернул статус 201 Created и добавил поля id и createdAt, которые генерируются автоматически.
REST vs SOAP vs GraphQL
REST — не единственный способ построить API. Сравним его с двумя другими популярными подходами.
SOAP (Simple Object Access Protocol) — протокол, разработанный Microsoft в 1998 году. Использует XML для запросов и ответов, требует строгую схему (WSDL). SOAP популярен в корпоративных системах и банках, где важна формальная спецификация и встроенная безопасность (WS-Security). Но он значительно тяжелее REST: XML-конверты, обязательные заголовки, сложная настройка.
GraphQL — язык запросов от Facebook* (2015). Клиент сам описывает, какие данные ему нужны, в одном запросе. Это решает проблему over-fetching (когда REST возвращает лишние поля) и under-fetching (когда нужно несколько запросов). Но GraphQL сложнее в реализации и отладке, а кэширование требует дополнительных усилий.
* Meta признана экстремистской и запрещена в России
- REST — простой, стандартный, подходит для большинства задач. Лучший выбор, если API публичное или команда небольшая
- SOAP — для корпоративных интеграций с жёсткими требованиями к безопасности и контрактам
- GraphQL — для сложных клиентов, которым нужна гибкость в выборке данных (мобильные приложения, SPA)
Частые вопросы
В чём разница между REST и RESTful?
REST — это архитектурный стиль, набор принципов. RESTful — это прилагательное, описывающее API, которое следует этим принципам. Говорить «RESTful API» — значит, что API реализует все (или большинство) ограничений REST: stateless, единообразный интерфейс, клиент-сервер и т.д. На практике термины часто используют как синонимы.
Нужна ли авторизация в REST API?
REST не требует авторизации по умолчанию — это зависит от конкретного API. Но на практике почти все API защищены. Популярные способы: API-ключи (передаются в заголовке), OAuth 2.0 (токены доступа), JWT (JSON Web Token). Выбор зависит от уровня безопасности и типа приложения.
Обязателен ли JSON для REST API?
Нет. REST не привязан к конкретному формату данных. Сервер может возвращать JSON, XML, HTML, обычный текст или даже бинарные данные. Формат указывается в заголовках Content-Type и Accept. Но JSON стал стандартом де-факто, потому что он легче XML, нативно поддерживается JavaScript и читается человеком.
Как тестировать REST API?
Для тестирования REST API используют:
- Postman — графический инструмент для отправки запросов. Подходит для ручного тестирования и документирования
- curl — командная утилита, встроенная в Linux и macOS. Быстрый способ проверить эндпоинт из терминала
- Insomnia — альтернатива Postman с минималистичным интерфейсом
- Swagger UI — автоматически генерирует интерактивную документацию, в которой можно отправлять запросы прямо из браузера
Заключение
REST API — это фундамент современной веб-разработки. Его сила — в простоте: стандартные HTTP-методы, понятные URL, предсказуемые ответы. Именно поэтому REST используют такие компании, как Google, GitHub, Stripe и тысячи других.
Если вы только начинаете работу с API — попробуйте отправить GET-запрос к любому публичному API (например, GitHub API) через curl или Postman. Это лучший способ понять, как всё работает на практике.
Чтобы глубже разобраться во взаимодействии клиента и сервера, рекомендуем нашу статью Frontend и Backend: как они взаимодействуют.