Что такое 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.
Комментарии
Отправить комментарий