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