(продолжение предыдующего поста)
1. Idempotency (Идемпотентность) :
* HTTP-методы и их идемпотентность:
* GET, HEAD, PUT, DELETE — идемпотентны, то есть повторные вызовы не изменяют состояние системы.
* POST, PATCH — не идемпотентны, повторные вызовы могут привести к разным результатам.
2. Versioning (Версионирование) :
* Два подхода к версионированию API:
* URL-based Versioning — версия указывается в URL (например,
https://api.example.com/v1/users, https://api.example.com/v2/users).* Query Parameter Versioning — версия передаётся через параметры запроса (например,
https://api.example.com/users?version=1, https://api.example.com/users?version=2).3. Noun-Based Resource Names (Имена ресурсов на основе существительных):
* Принцип построения URL на основе существительных, соответствующих ресурсам (например,
/api/products).* Связь HTTP-методов с операциями CRUD:
* Create → POST
* Read → GET
* Update → PUT / PATCH
* Delete → DELETE
4. Пример API-запроса (центр изображения):
* Типичный HTTP-запрос с параметрами:
* Метод: GET
* URL:
/api/v1/orders?limit=3&offset=0* Заголовки:
*
Host: example.com*
Authorization: Bearer T4dwe!...WE (токен аутентификации)*
Accept: application/json (формат ответа)5. Security (Безопасность):
* Применение JWT-токенов (JSON Web Token), который состоит из трёх частей:
* Header (заголовок) — содержит алгоритм шифрования (например, HS256).
* Payload (полезная нагрузка) — данные пользователя (например,
sub, name, admin, iat).* Signature (подпись) — результат HMACSHA256-хэширования заголовка и полезной нагрузки с использованием секретного ключа.
6. Pagination (Пагинация):
* Механизм разбиения данных на страницы:
* limit — количество элементов на странице (например,
limit=3).* offset — смещение относительно начала списка (например,
offset=0).