Очередная теоретическая статья, посвящённая графоманству.
REST — стиль построения распределённого приложения в сети, набор ограничений.
Веб-службы, построенные на REST называются RESTful.
Идея REST состоит в построении взаимодействия, основанного на протоколе HTTP.
Сам по себе REST не является стандартом. Нет чёткого описания того, что должно быть, а чего не должно быть, поэтому в разных командах ограничения могут немного различаться. Сами RESTful сервисы используют стандарты HTTP, JSON, XML и URL.
Обычно используются следующие методы HTTP:
- POST — для создания записи или объекта. Возможные коды ответа HTTP 201 Created, HTTP 500 Internal Server Error и другие.
- GET — для получения записи или объекта. Возможные коды ответа HTTP 200 OK, HTTP 404 Not Found, HTTP 500 Internal Server Error и другие.
- PUT — для обновления записи или объекта. Возможные коды ответа HTTP 200 OK, HTTP 404 Not Found, HTTP 500 Internal Server Error и другие.
- DELETE — для удаления объекта. Возможные коды ответа HTTP 204 No Content, HTTP 500 Internal Server Error и другие.
Для сервисов построенных по архитектурному стилю REST должно соблюдаться правило, что между запросами от клиента никакая информация о состоянии этого клиента не хранится (stateless). Вся необходимая информация о клиенте передаётся в самом запросе. Например, могут использоваться JWT-токены.
Как и обычные сайты в сети сервисы REST могут выполнять кэширование, которое строится с учётом методов HTTP. Например, для метода POST кэширование не должно выполняться, а для метода GET кэширование результатов допустимо.
Сервисы, построенные по архитектурному стилю REST, можно документировать с помощью RAML или Swagger.
Для REST сервисов применимо понятие идемпотентность. Идемпотентным называется HTTP метод, который можно безбоязненно вызывать несколько раз, ожидая той же самой реакции сервера: GET, PUT. Идемпотентным называется HTTP метод, который нельзя вызывать повторно, не проверив дополнительно, что прошлый запрос был успешным. Например, если покупка в онлайн магазине осуществляется с помощью POST, то при потере связи нам уже будет неизвестно, отработал запрос или нет. При восстановлении соединения нельзя пытаться отправить запрос ещё раз, так как это может привести к дублированию покупки.
Методы REST используют URL для доступа к ресурсам, коды ошибок HTTP для различных ответов сервера, заголовки HTTP для описания типов передаваемых данных и дополнительной информации.