Понимание 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
PUT заменяет сущетвующую сущность. Те элементы сущности, которые не представлены в запросе, будут очищены или заменены на null.

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