RESTful принципы

1. Клиент-серверная модель (client-server model)

Клиент и сервер могут работать абсолютно независимо друг от друга. Разработчики используют достаточно простой способ организации REST API: клиентский код остается на его стороне, а код доступа — на сервере. Если клиентский код изменится, это не скажется на работе сервера, и наоборот. Благодаря этому REST API имеет такие преимущества, как переносимость и гибкость, а также возможность масштабирования.

2. Отсутствие состояния (statelessness)

На сервере не записываются проведенные операции клиента. Каждый запрос должен быть информативным и унифицированным, то есть понятным серверу.

3. Кэширование (cacheability)

В REST API запросах определяется, нужно ли кэшировать данные в буфере. Клиенту это дает высокую производительность и увеличивает скорость загрузки страниц, а серверу дает большие возможности масштабирования.

4. Единообразие интерфейса (uniform interface)

Одним из важнейших аспектов проектирования RESTful API является соблюдение единого интерфейса. Это предполагает использование согласованных соглашений и стандартных методов HTTP для обработки запросов API. Соответствуя этим стандартам, разработчики могут значительно упростить внедрение и обслуживание API. API REST должны использовать следующие стандартные методы HTTP для различных действий:

  • GET : извлекает ресурс или коллекцию ресурсов.

  • POST : Создает новый ресурс или отправляет данные для обработки.

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

  • PATCH : Частично обновляет ресурс с определенными изменениями.

  • DELETE : Удаляет ресурс.

Эти стандартные методы четко понимают каждую операцию и способствуют совместимости между клиентами и серверами. Для обеспечения надежной и последовательной работы крайне важно обеспечить правильный метод для каждого действия. Более того, единый интерфейс упрощает обработку ошибок и кодов состояния, гарантируя клиентам четкую и последовательную обратную связь. При создании RESTful API крайне важно возвращать точные и информативные коды состояния HTTP. Статусов много, поэтому их всех не перечислить, однако важно знать их группировку::

  • 2xx – Успех: запрос был успешно получен, понят и принят.

  • 3xx — Перенаправление (редирект): запрос должен выполнить дальнейшие действия для завершения запроса.

  • 4xx — Ошибка клиента: запрос имеет неверный синтаксис или не может быть выполнен.

  • 5xx — Ошибка сервера: серверу не удалось выполнить кажущийся действительным запрос.

5. Многоуровневая система (layered system)

В RESTful возможна группировка серверов на разных уровнях, каждый из которых выполняет определенный функционал и выступает посредником между клиентом и сервером.

6. Код по требованию (code on demand) — необязательно

Серверы предоставляют клиенту статические представления ресурсов. При использовании программной архитектуры REST API клиент, к примеру, может получить код рендеринга для виджетов. Общий код усложняется лишь при необходимости.

Источники:

Last updated