Понимание REST
REST (Representational State Transfer) был введен и определен в 2000 году Roy Fielding в его докторской диссертации. REST - это архитектурный стиль для проектирования распределенных систем. Он не является стандартом, но определяет ограничения, такие как отсутствие состояний, клиент-серверная взаимосвязь и унифицированный интерфейс. REST не связан строго с HTTP, но чаще всего его ассоциируют именно с ним.
Принципы REST
- Ресурсы позволяют легко понять структуру каталогов URI
- Представления передают JSON или XML в качестве представления данных объекта и атрибутов
- Сообщения используют HTTP методы явно(например, GET, POST, PUT и DELETE)
- Отсутствие состояния взаимодействий не сохраняет контекст клиента на сервере между запросами
HTTP методы
Используются HTTP методы для определения CRUD (create, retrieve, update, delete) операций HTTP запросов.
GET
Получение информации. GET запросы должны быть безопасны и идемпотентны, т.е. независимо от того, как много времени они повторяются с теми же самысыми параметрами, результат останется тот же. Они могут иметь побочные эффекты, но пользователь не ожидает их, поэтому они не могут критичными для функционирования системы. Запросы могут быть также частичными или условными.
Получение адреса по ID, равным 1:
GET /addresses/1
POST
Запрос что-то сделать с ресурсом по URI с предоставлением сущности. Часто POST используется для создания новой сущности, но также возможно использовать и для обновления существующей.
Создание нового адреса:
POST /addresses
PUT
Сохраняет сущность по URI. PUT может создавать новую сущноть или обновлять существующую. PUT запрос идемпотентен. Идемпотентность - главное отличие в поведении между PUT и POST запросом.
Изменение адреса по ID, равным 1:
PUT /addresses/1
PATCH
Обновляет только определенные поля сущности по URI. PATCH запрос идемпотентен. Идемпотентность - главное отличие в поведении между PUT и POST запросом.
PATCH /addresses/1
DELETE
Запрос, который удаляет ресурс; кроме того, ресурс не должен быть удален немедленно. Он может быть асинхронным или "долгоиграющим" запросом.
Удаления адреса по ID, равным 1:
DELETE /addresses/1
HTTP статус коды
Статус коды указывают на результат HTTP запроса.
- 1ХХ - информационный
- 2ХХ - успешное выполнение
- 3ХХ - перенаправление
- 4ХХ - ошибка клиента
- 5ХХ - ошибка сервера
Медиа типы
Accept
и Content-Type
HTTP заголовков могут быть использованы
для описания содержимого, которое будет отправлено или запрошено HTTP запросом. Клиент
может установить Accept
в application/json
, если он
запрашивает ответ в JSON. И наоборот, когда отправляются данные, установленный
Content-Type
в application/xml
говорит клиенту, что данные
были отправлены в XML форме.
С оригинальным текстом урока вы можете ознакомиться на spring.io.
comments powered by Disqus