JavaRush /Курси /Модуль 3: Django /Що таке Django REST Framework (DRF)

Що таке Django REST Framework (DRF)

Модуль 3: Django
Рівень 16 , Лекція 0
Відкрита

Вітаємо всіх початківців майстрів API та майбутніх володарів даних! Сьогодні ми вирушимо у світ Django REST Framework (або просто DRF). Але спочатку зробимо крок назад, поглянемо на REST API загалом і дізнаємося, як ця магія з'єднує клієнтів і сервери. Піднімемо завісу й подивимося, що ховається за абревіатурою REST.

Що таке REST API?

REST (Representational State Transfer) — це архітектурний стиль, який використовується для побудови взаємодій між різними системами через HTTP. Якщо говорити простіше, REST API — це набір правил і угод, які дозволяють клієнту запитувати дані з сервера, надсилати на нього дані або взаємодіяти з ним іншим чином.

REST API базується на кількох принципах, які допомагають нам зберігати простоту і узгодженість:

  1. Stateless (Безстан): сервер не зберігає жодної інформації про стан клієнта. Кожен запит клієнта до сервера автономний і містить всю необхідну інформацію.
  2. Client-Server (Клієнт-Сервер): клієнт і сервер залишаються незалежними. Клієнт не "знає", як сервер реалізує свою логіку, а сервер не "знає", хто такий клієнт.
  3. Uniform Interface (Єдиний інтерфейс): REST використовує стандартизовані методи HTTP (GET, POST, PUT, DELETE та ін.) для спілкування.
  4. Layered System (Багатошаровість): у REST клієнту неважливо, спілкується він безпосередньо з сервером чи через посередників (наприклад, кешуючі проксі).

Зазвичай REST API будується навколо ресурсів. У ресурсу є свій URL, і до нього можна робити запити. Наприклад:

  • GET /api/articles/ — отримати список усіх статей.
  • POST /api/articles/ — створити нову статтю.
  • GET /api/articles/1/ — отримати дані конкретної статті.
  • PUT /api/articles/1/ — оновити дані статті.
  • DELETE /api/articles/1/ — видалити статтю.

Тепер почнемо розбиратися, як DRF допомагає нам реалізувати подібні API.

Що таке Django REST Framework?

Django REST Framework (DRF) — це потужний інструмент для створення REST API, побудований на основі Django. Він надає розробникам безліч "з коробки" можливостей для обробки HTTP-запитів, сериалізації даних, управління автентифікацією, пагінацією та багато іншого.

DRF створений для одного — щоб зробити ваше життя простішим. Він:

  1. Спрощує побудову API на основі Django.
  2. Дозволяє вам зосередитися на логіці застосунку, а не на низькорівневих деталях HTTP протоколу.
  3. Надає купу вже готових компонентів, таких як маршрути, автентифікація та обробка помилок.
  4. Інтегрується з Django ORM, що дозволяє легко працювати з моделями та базою даних.

Переваги використання DRF

Чому ми обираємо DRF, а не пишемо REST API вручну? Ось лише кілька причин:

  • Швидкість розробки: завдяки готовим інструментам та шаблонам DRF дозволяє створити API швидко і з мінімальною кількістю коду.
  • Документування: DRF генерує просту документацію "з коробки", щоб інші розробники могли легко тестувати та розуміти ваш API.
  • Автентифікація та дозволи: DRF надає готові механізми для перевірки автентичності користувачів та обмеження доступу.
  • Сериалізація даних: DRF спрощує процес перетворення даних моделей у JSON (та назад).
  • Підтримка складних запитів: робота з фільтрацією, анотацією та агрегацією даних стає простою задачею завдяки вбудованим інструментам DRF.

Архітектура DRF: ключові компоненти

Давай подивимось, з чого складається DRF. Основні цеглинки:

  1. Serializers (Серіалізатори): перетворюють дані з Python-об'єктів (наприклад, моделей Django) у JSON-формат (і навпаки). Це — місток між твоїм додатком та клієнтом API.

  2. Views: представлення обробляють HTTP-запити та відповідають клієнту. У DRF є два основних підходи:

    • APIView: підходить для обробки базових сценаріїв.
    • ViewSet: елегантний спосіб скорочення коду для роботи з CRUD-операціями.
  3. Routers (Маршрути): ці хлопці автоматично співставляють твої ViewSet'и з URL-адресами, щоб ти не витрачав час на їх ручне налаштування.

  4. Permissions (Дозволи): дозволяють обмежувати доступ до API на основі ролей користувача або інших умов.

  5. Authentication (Аутентифікація): підтримка різних методів аутентифікації, включаючи токени, сесії та JWT (JSON Web Tokens).

  6. Pagination (Пагінація): ділить великі результати на зручні порції (page=1, page=2, …).

Взаємодія між компонентами

Щоб зрозуміти, як це працює, уяви, що ти створив API, яке дозволяє клієнту отримати список статей. Ось як компоненти DRF працюють разом:

  1. Серіалізатор готує дані моделей у JSON-форматі.
  2. ViewSet отримує запити клієнтів і викликає методи серіалізатора.
  3. Router співставляє URL-адреси з ViewSet, дозволяючи клієнту надсилати запити за зрозумілими URL.
  4. Permissions перевіряють, чи має клієнт право зробити запит.
  5. Authentication переконується, що користувач пройшов перевірку автентичності.

Приклади використання DRF у реальних проєктах

DRF активно використовується в реальних застосунках. Ось кілька прикладів:

  • Мобільні застосунки: API, створені на DRF, часто використовуються для взаємодії між сервером і мобільними застосунками.
  • Мікросервіси: DRF дозволяє легко створювати окремі сервіси в рамках мікросервісної архітектури.
  • Інтеграція з фронтендом: DRF — чудовий вибір для SPA (Single Page Applications), таких як ті, що побудовані на Angular, React або Vue.

Ну що, ви вже відчуваєте себе трохи ближче до світу API? У наступних лекціях ми почнемо встановлювати DRF і налаштовувати наш перший проєкт. Запасайтеся кавою!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ