Состояние


REST-api является безсостояночным, то есть сервер не хранит информацию о состоянии клиента между запросами. Это означает, что клиент должен передавать все необходимые данные в каждом запросе, чтобы мог обработать его правильно. Безсостояночность позволяет создавать более масштабируемые и отказоустойчивые системы, поскольку зависит от состояния клиента.


Пример


Давайте рассмотрим пример REST-api для управления пользователями. Мы можем иметь следующие ресурсы:


`users`: коллекция всех пользователей


`users/{id}`: отдельный пользователь с заданным идентификатором


Мы можем использовать следующие методы HTTP для взаимодействия с этими ресурсами:


`GET /users`: получить список всех пользователей


`GET /users/{id}`: получить информацию о отдельном пользователе


`POST /users`: создать нового пользователя


`PUT /users/{id}`: обновить информацию о пользователе


`DELETE /users/{id}`: удалить пользователя


В этом примере мы видим, как REST-api позволяет нам взаимодействовать с ресурсами системы в стандартизированном и интуитивном виде.


В заключение, основные принципы REST-api – ресурсо-ориентированный подход, идемпотентность, безопасность, кэширование и безсостояночность позволяют создавать масштабируемые отказоустойчивые системы. следующей главе мы рассмотрим, как реализовать на практике.


2.3. HTTP-методы и статусы


Когда мы начинаем строить наше REST-api, нам необходимо понимать, как взаимодействовать с ресурсами на сервере. Для этого используем HTTP-методы и статусы. В этой главе рассмотрим основные статусы, которые используются в REST-api.


HTTP-методы


HTTP-методы – это способ указать серверу, какое действие необходимо выполнить с ресурсом. Существует несколько основных HTTP-методов:


GET: Получить ресурс. Этот метод используется для получения информации о ресурсе.


POST: Создать ресурс. Этот метод используется для создания нового ресурса на сервере.


PUT: Обновить ресурс. Этот метод используется для обновления существующего ресурса на сервере.


DELETE: Удалить ресурс. Этот метод используется для удаления ресурса с сервера.


PATCH: Частично обновить ресурс. Этот метод используется для частичного обновления существующего ресурса на сервере.


Каждый из этих методов имеет свое предназначение и используется в зависимости от того, что мы хотим сделать с ресурсом.


HTTP-статусы


HTTP-статусы – это способ указать клиенту, как прошел запрос. Существует несколько основных категорий HTTP-статусов:


1xx: Информационные статусы. Эти статусы используются для предоставления информации о процессе обработки запроса.


2xx: Успешные статусы. Эти статусы используются для указания, что запрос был успешно обработан.


3xx: Статусы перенаправления. Эти статусы используются для перенаправления клиента на другой URL.


4xx: Статусы ошибок клиента. Эти статусы используются для указания, что клиент сделал ошибку в запросе.


5xx: Статусы ошибок сервера. Эти статусы используются для указания, что сервер сделал ошибку при обработке запроса.


Некоторые из наиболее часто используемых HTTP-статусов включают:


200 OK: Запрос был успешно обработан.


404 Not Found: Ресурс не найден.


500 Internal Server Error: Сервер сделал ошибку при обработке запроса.


Примеры использования HTTP-методов и статусов


Давайте рассмотрим пример использования HTTP-методов и статусов. Предположим, у нас есть REST-api для управления пользователями. Мы хотим получить информацию о пользователе с идентификатором 1.


Мы отправляем GET-запрос на URL `/users/1`.


Сервер обрабатывает запрос и возвращает HTTP-статус 200 OK информацию о пользователе.


Теперь давайте рассмотрим пример создания нового пользователя.