REST (Representational State Transfer) — архитектурный стиль для создания API. Рассмотрим основные концепции, принципы работы и лучшие практики разработки.
Что такое REST?
REST — архитектурный стиль, предложенный Роем Филдингом, одним из создателей протокола HTTP. Ключевая особенность — оптимальное использование возможностей HTTP.
Ключевые абстракции REST
- Ресурс: Всё, что приложение предоставляет внешнему миру. Например, в приложении для управления задачами — отдельный пользователь, задача и список задач.
- URI (Унифицированный Идентификатор Ресурса): Идентификатор ресурсов. Примеры:
- POST /users (создать пользователя)
- DELETE /users/david (удалить пользователя David)
- GET /users (получить всех пользователей)
- GET /users/1 (получить пользователя с идентификатором 1)
Принципы REST
При разработке REST-сервисов важно определить ресурсы и использовать глаголы HTTP для операций с ними. Основные характеристики:
- Формат обмена данными: REST не ограничивает формат данных. Популярен JSON, но можно использовать XML и другие.
- Транспорт: Всегда HTTP.
- Определение сервиса: Нет единого стандарта. REST гибкий, что может быть как преимуществом, так и недостатком. Используются языки описания веб-приложений, например, WADL (Web Application Description Language). REST фокусируется на ресурсах и эффективности операций с ними.
HTTP-запросы и ответы
HTTP-запрос состоит из:
- Строки запроса (Request Line): Определяет тип сообщения.
- Заголовков запроса (Headers): Характеристики тела сообщения, параметры передачи и другая информация.
- Тела сообщения (Body): Необязательно.
Ответ HTTP состоит из:
- Строки состояния (Status Line): Код состояния и сообщение о причине.
- Заголовков ответа (Headers):
- Тела сообщения (Body):
Методы HTTP
- GET: Получение информации о ресурсе.
- POST: Создание нового ресурса.
- PUT: Обновление существующего ресурса.
- DELETE: Удаление ресурса.
Коды состояния HTTP
- 200: Успех.
- 404: Ресурс не найден.
REST — архитектурный стиль, основанный на HTTP, фокусирующийся на ресурсах и использовании глаголов HTTP для операций с ними. REST не ограничивает форматы данных или способы определения сервиса, обеспечивая гибкость. HTTP — основной строительный блок REST-сервисов, определяющий структуру запросов и ответов.