REST (Representational state transfer - передача состояния представления) - архитектурный стиль обмена данными между разными компонентами системы, каждая из которых может физически располагаться в разных местах.
Представляет собой согласованный набор ограничений, учитываемых при проектировании удаленной системы.
REST - это паттерн проектирования web-приложений. Он описывает то, как посредством протокола HTTP должен взаимодействовать клиент с сервером.
Все взаимодействие с сервером сводится к 4 операциям, которые используют свой HTTP метод - GET (получение данных), POST (добавление, изменение, удаление), PATCH (добавление, изменение), DELETE (удаление).
HTTP метод | URL | Действие |
---|---|---|
GET | /posts | Получаем список данных |
GET | /posts/new | HTML форма создания записи |
GET | /posts/:id/edit | HTML форма редактирования записи |
GET | /posts/:id | Получаем одну запись |
POST | /posts | Создаем новую запись |
PATCH | /posts/:id | Обновляем запись |
DELETE | /posts/:id | Удаляем запись |
- надежность в виде отсутствия необходимости сохранять информацию о состояни клиентов
- производительность за счет использования кэша
- масштабируемость
- прозрачность системы взаимодействия
- простота интерфейсов
- портативность компонентов
- легкость внесения изменений
Коммуникация проходит путем запросов-ответов. Запросы содержат:
- HTTP метод;
- заголовок;
- URI;
- тело запроса - JSON или XML.
Запрос | Описание |
---|---|
GET /clients/23 Accept : application/json, application/xml |
Получить информацию о клиенте №23 в формате json или xml |
POST /clients { "name" : "Amigo", "email" : "[email protected]", "phone" : +7 (191) 746-43-23" } |
Создать нового клиента с полями: Имя — Amigo Email — [email protected] Тел. — +7 (191) 746-43-23 |
PUT /clients/1 { "name" : "Ben", "email" : "[email protected]", "phone" : "+380 (190) 346-42-13" } |
Редактировать клиента №1 в следующим образом: Имя — Ben Email — [email protected] Тел. — +380 (190) 346-42-13 |
DELETE /clients/12/orders/6 | Удалить из системы заказ №6 у клиента №12 |