TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2747 1.56K
Аспекты проектирования хорошего API
(продолжение предыдующего поста)

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).
Telegram METANIT.COM Аспекты проектирования хорошего API (продолжение в следующем посте)
  • 🔥 5
  • ❤ 4
  • 👍 2
  • 💯 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →