June 11, 2020

Flask Checkpoint 01. REST сервіси та інструменти

Цілі

  1. Зрозуміти що таке REST API і основні залежні концепції.
  2. Ознайомитись з існуючими фреймворками на Python.
  3. Дізнатись, що таке CRUD при розробці API.

Коли є чіткі цілі легше зрозуміти чи потрібно звертатись до даного матеріалу. Бо будь-яка інформація, яку ми споживаємо повинна мати свою місію.


Основні терміни

Потрібно трішки розібратись з основними термінами, аби продовжити роботу з матеріалом. Цей розділ можна використовувати як довідник.

Для початку давайте розглянемо таку концепцію, як API - це інтерфейс взаємодії зі застосунком ззовні. Якщо у вже є готовий функціонал чи продукт і він представлений в якості чорного ящику, тобто те як він працює всередині нам невідомо чи не цікаво. API і є описом того, як використовувати цей ящик всередині, коли ми стукаємось до нього ззовні.


В чому ж різниця між бібліотекою і фреймворком?

Бібліотека - це збірка різноманітних функцій і підпрограм, яка може переноситись будь-куди і використовуватись в інших застосункох. Основна ідея в тому, що ці клаптики коду рідко змінюються, зібрані згідно якоїсь специфіки і легко переносяться.

Фреймворк - це вже готовий каркас для майбутнього застосунку, в який зібрані всі необхідні деталі: бібліотеки, структура, початковий код та інше. Це схоже на напівфабрикат, який потрібно лише трішки розігріти зусиллями, щоб вийшов готовий застосунок.

Додатково можна почитати за посиланням:
Фреймворк чи бібліотека? А в чому, власне, різниця?


RESTful API - це всього лиш набір URI, HTTP викликів до цих URI і деяка кількість представлень цих ресурсів в форматі JSON та/або XML, багато з яких будуть містити перехресні посилання. За основу адресації береться покриття унікальними ідентифікаторами ресурсів (URI). В кожного ресурсу є своя адреса або URI: вся потрібна і цікава для нас інформація, представляється як ресурс.

Endpoint - це визначений набір, який складається з URI та HTTP-методу, які використовуються для доступу до потрібного ресурсу.

Приклад визначених ендпоінтів в документації до Stepik API.

CRUD - це скорочення від Create, Read, Update, Delete. Це коротка назва всіх видів операцій маршруту, які він дозволяє робити: читати, створювати, оновлювати або видалята що-небудь (ресурс).

Огляд існуючих REST фреймворків

Рейтинг фреймворків з ресурсу HotFrameworks

Кожен розробник має можливість обрати з широкого спектру фреймворків, тут скоріше йде акцент на те, чи використовувалась та чи інша технологія раніше.

Можна використовувати повнофункціональні великі фреймворки для збільшення швидкості розробки великих і складних веб-застосунків, використовуючи ряд функцій та інструментів. Крім того, є вибір з простих мікро-фреймворків для створення маленьких веб-застосунків без додаткових витрат часу та зусиль.

Django та Flask користуються великою популярністю у розробників, це помітно по графіках вище. Django - це великий фреймворк, як кажуть, з батарейками в комплекті, тобто в багатьох випадках можна обійтись лише інструментами, що включені в набір цього фреймворку. В той час, як Flask - це мікро-фреймворк, який легко розширювати з допомогою сторонніх розширень.

Функціональний інтерфейс адміністратора

На відміну від Flask, в Django одразу вбудований Django-admin. Цей компонент спрощує роботу користувачів із загальними задачами по адмініструванню проекту, забезпечуючи готове середовище адміністрації. Розробники мають можливість налаштувати інтерфейс згідно вимог бізнесу, також автоматично створюються модулі на основі моделей проекту. Цим Django вирізняється серед натовпу інших фреймворків.

Архітектура проекту

Flask вимагає від розробників, щоб кожен проект був у вигляді одного застосунку. Проте розробники мають можливість розширювати набір Models і Views. З іншого боку, Django дозволяє розробникам розділити один проект на кілька застосунків, це робить протішим процес написання окремих додатків без зайвої інтеграції у проект.

Підтримка бази даних

Django дозволяє розробникам скористатись надійною ORM системою, яка одразу вбудована в фреймворк, це дає можливість використовувати одну з поширених баз даних: MySQL, SQLite, Oracle, PostgreSQL. Зі своєї сторони, Flask не забезпечує підтримку ORM системи одразу з коробки, проте є можливість використовувати ту ORM, яка більше подобається, найпопулярнішою є SQLAlchemy.

Гнучкість

Всі інструменти, які входять в комплект до Django в певній мірі обмежують розробників. Це означає, що для написання веб-додатку існують певні рамки, адже немає можливості вносити зміни в модулі Django. Якщо говорити про Flask, то це мікро-фреймворк, його легко розширювати та заміняти ті чи інші компоненти. Великій кількості новачків легше розібратись з Flask, аніж з Django.

В загальному плані варто зважати на ці відмінності при виборі того чи іншого фреймворку для розробки, хоча вони, насправді, всі дуже схожі.