REST (Representational State Transfer) — это архитектурный стиль для распределенных гипермедийных систем. Он не является стандартом или набором инструментов, а представляет собой набор принципов и ограничений.
Ключевые принципы REST:
- Клиент-сервер: Четкое разделение ролей клиента и сервера. Клиент инициирует запросы, сервер их обрабатывает.
- Stateless (отсутствие состояния): Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для обработки. Сервер не хранит состояние клиента между запросами.
- Cacheable (кешируемость): Ответы сервера могут быть помечены как кэшируемые, что позволяет клиентам повторно использовать предыдущие ответы для тех же запросов, улучшая производительность.
- Layered System (многослойная система): Клиент не знает, напрямую ли он связан с конечным сервером или находится между ним и промежуточными серверами (например, прокси, балансировщики нагрузки).
- Code-On-Demand (необязательно, код по требованию): Сервер может временно расширять или настраивать функциональность клиента, передавая исполняемый код.
- Uniform Interface (единый интерфейс): Ключевой принцип, состоящий из четырех ограничений:
- Identification of Resources (Идентификация ресурсов): Ресурсы (данные или объекты) идентифицируются с помощью Universal Resource Identifiers (URIs).
- Manipulation of Resources Through Representations (Манипуляция ресурсов через их представления): Клиент взаимодействует с ресурсами через их представления (например, JSON, XML). Изменение представления ресурса приводит к изменению самого ресурса.
- Self-Descriptive Messages (Самоописывающие сообщения): Каждое сообщение содержит достаточно информации для его интерпретации получателем, включая метаданные о ресурсе и его представлении.
- Hypermedia As The Engine Of Application State (Гипермедиа как движок состояния приложения): Клиент, взаимодействуя с сервером, переходит по ссылкам (линкам), содержащимся в ответах, что определяет возможные следующиешаги или состояния приложения. Это принцип HATEOAS.
RESTful API — это API, который соответствует принципам REST. В контексте HTTP, RESTful API часто использует стандартные методы HTTP (GET, POST, PUT, DELETE) для выполнения операций над ресурсами.
Пример использования HTTP методов в RESTful API:
| HTTP Метод | Действие | Соответствие CRUD |
|---|
GET | Получить ресурс(ы) | Read |
POST | Создать ресурс | Create |
PUT | Обновить ресурс | Update |
DELETE | Удалить ресурс | Delete |
Пример RESTful запроса к API для получения списка пользователей:
go
Пример RESTful запроса к API для создания нового пользователя:
go
Пример RESTful запроса к API для получения конкретного пользователя по ID:
go
Пример RESTful запроса к API для обновления информации о пользователе по ID:
go
Пример RESTful запроса к API для удаления пользователя по ID:
go