Что такое REST?

REST (Representational State Transfer) был введен и определен в 2000 году Роем Филдингом (Roy Fielding) в его докторской диссертации. REST - это архитектурный стиль для проектирования распределенных систем. Это не стандарт, а набор ограничений, таких как отсутствие состояния, наличие отношений клиент/сервер и единый интерфейс. REST не связан строго с HTTP, но чаще всего ассоцируется с ним.

Принципы REST

  • Ресурсы (Resources) предоставляют понятные URI структуры каталогов.
  • Представления (Representations) передают JSON или XML для представления объектов данных и атрибутов.
  • Сообщения (Messages) явно используют методы HTTP (например, GET, POST, PUT и DELETE).
  • Взаимодейтсвия без состояния (Stateless interactions) не сохраняют клиентский контекст на сервере между запросами. Зависимости состояния ограничивают масштабируемость. Клиент хранит состояние сеанса.

HTTP методы

Используйте HTTP методы для сопоставления операций CRUD (создание, получение, обновление, удаление) с HTTP запросами.

GET

Получить информацию. GET-запросы должны быть безопасными и идемпотентными, то есть независимо от того, сколько раз они повторяются с одинаковыми параметрами, результаты одинаковы. Они могут иметь побочные эффекты, но пользователь не ожидает их, поэтому они не могут быть критическими для работы системы. Запросы также могут быть частичными или условными.

Получить адрес с идентификатором 1:

GET /addresses/1

POST

Запрос, чтобы ресурс в URI что-то сделал с предоставленным объектом. Часто POST используется для создания новой сущности, но также может использоваться для обновления сущности.

Создать новый адрес:

POST /addresses

PUT

Сохранить объект в URI. PUT может создать новый объект или обновить существующий. Запрос PUT идемпотентен. Идемпотентность - это основное различие между ожиданиями PUT и POST-запроса.

Изменить адрес с идентификатором 1:

PUT /addresses/1

Примечание. PUT заменяет существующую сущность. Если предоставляется только подмножество элементов данных, остальные будут заменены пустыми или null.

PATCH

Обновить только указанные поля объекта в URI. Запрос PATCH не является ни безопасным, ни идемпотентным (RFC 5789). Это связано с тем, что операция PATCH не может гарантировать, что весь ресурс обновлен.

PATCH /addresses/1

DELETE

Запросить удаление ресурса; тем не менее, ресурс не должен быть удален немедленно. Это может быть асинхронный или длительный запрос.

Удалить адрес с идентификатором 1:

DELETE /addresses/1

HTTP коды состояния

Коды состояния указывают результат HTTP-запроса.

  • 1XX- информационный
  • 2XX- успех
  • 3XX- перенаправление
  • 4XX- ошибка клиента
  • 5XX- ошибка сервера

Типы носителей

HTTP заголовки Accept и Content-Type можно использовать для описания содержимого, отправляемого или запрашиваемого в HTTP запросе. Клиент может установить для Accept значение application/json, если он запрашивает ответ в JSON. И наоборот, при отправке данных установка для Content-Type значения application/xml сообщает клиенту, что данные, отправляемые в запросе, представляют собой XML.

Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки