Репрезентативный State Transfer (REST) — это архитектурный стиль, определяющий набор ограничений, которые будут использоваться для создания веб-сервисов. REST API — это простой и гибкий способ доступа к веб-службам без какой-либо обработки.
Технология REST обычно предпочтительнее более надежной технологии протокола доступа к простым объектам (SOAP), поскольку REST использует меньшую пропускную способность, прост и гибок, что делает его более подходящим для использования в Интернете. Он используется для извлечения или предоставления некоторой информации из веб-службы. Вся связь, осуществляемая через REST API, использует только HTTP-запрос.
Working
Запрос отправляется от клиента на сервер в виде веб-адреса в виде HTTP-запроса на GET , POST, PUT или DELETE. После этого с сервера возвращается ответ в виде ресурса, который может быть любым, например HTML, XML, изображением или JSON. Но сейчас JSON является самым популярным форматом, используемым в веб-сервисах.
В HTTP существует пять методов, которые обычно используются в архитектуре на основе REST, т. е. POST, GET, PUT, PATCH и DELETE. Они соответствуют операциям создания, чтения, обновления и удаления (или CRUD) соответственно. Есть и другие методы, которые используются реже, такие как OPTIONS и HEAD.
- GET: Метод HTTP GET используется для read (или получить) представление ресурса. В безопасном пути GET возвращает представление в XML или JSON и код ответа HTTP 200 (ОК). В случае ошибки он чаще всего возвращает 404 (NOT FOUND) или 400 (BAD REQUEST).
- POST: Глагол POST чаще всего используется для Создать новые ресурсы. В частности, он используется для создания подчиненных ресурсов. То есть подчиняется какому-либо другому (например, родительскому) ресурсу. При успешном создании верните статус HTTP 201, вернув заголовок местоположения со ссылкой на вновь созданный ресурс со статусом HTTP 201.
NOTE: POST не является ни безопасной, ни идемпотентной.
- PUT: Он используется для updating возможности. Однако PUT также может быть использован для create ресурс в случае, когда идентификатор ресурса выбирается клиентом, а не сервером. Другими словами, если PUT относится к URI, который содержит значение несуществующего идентификатора ресурса. При успешном обновлении верните 200 (или 204, если не возвращаете какое-либо содержимое в теле) из PUT. При использовании PUT для создания верните HTTP-статус 201 при успешном создании. PUT — это небезопасная операция, но она идемпотентна.
- PATCH: Он используется для modify возможности. Запрос на исправление должен содержать только изменения в ресурсе, а не полный ресурс. Это похоже на PUT, но тело содержит набор инструкций, описывающих, как ресурс, находящийся в настоящее время на сервере, должен быть изменен для создания новой версии. Это означает, что тело PATCH должно быть не просто измененной частью ресурса, а на каком-то языке исправлений, таком как исправление JSON или исправление XML. PATCH не является ни безопасным, ни идемпотентным.
- DELETE: Он используется для delete ресурс, идентифицированный с помощью URI. При успешном удалении верните статус HTTP 200 (ОК) вместе с телом ответа.
Idempotence: Идемпотентный метод HTTP — это метод HTTP, который можно вызывать много раз без разных результатов. Не имеет значения, вызывается ли метод только один раз или десять раз. Результат должен быть таким же. Опять же, это относится только к результату, а не к самому ресурсу. Пример:
1. a = 4 // It is Idempotence, as final value(a = 4)
// would not change after executing it multiple
// times.
2. a++ // It is not Idempotence because the final value
// will depend upon the number of times the
// statement is executed.