Flask — це один з найпростіших способів створення веб-додатків за допомогою Python. Уявімо, що ви захоплюєтесь машинним навчанням (ML) і багато працювали над тренуванням ефективної моделі. Тепер ви хочете поділитися цією чудовою моделлю з усім світом. Ви хочете створити інтерактивну та зручну платформу для відображення результатів вашої моделі. Найпоширеніші платформи — це зазвичай додатки та веб-сайти.
Найпростіший спосіб — створити API на основі Flask за допомогою Python. Як тільки веб- або мобільний розробник отримає це API, він або вона зможе легко створити платформу для відображення результатів вашої тренованої моделі машинного навчання у зручному для користувача вигляді.
Перед тим, як перейти до практики, давайте розберемося, що і чому.
Що таке Flask? Чому нам потрібен Flask?
Flask — це легкий, простий у використанні веб-фреймворк на Python. Це набір інструментів, який надає все необхідне для швидкого створення та запуску веб-сервера або API. Він не має зайвих компонентів, тільки те, що потрібно для роботи.
Що таке API?
Простими словами, API (Application Programming Interface) дозволяє різному програмному забезпеченню взаємодіяти одне з одним. Ви можете порівняти його з Гедвігом, совою Гаррі Поттера. Уявіть, що Гедвіг — це API, і її завданням є доставка повідомлень між сервером (Хогвартс) і клієнтом (Гаррі Поттером). Ви надсилаєте своє магічне повідомлення (дані) іншим, і вони відправляють його назад, коли все готово.
Тепер давайте розглянемо покроковий процес створення Flask API.
Крок 1: Встановлення Flask
“Готуйте свої палиці!” 🪄
Перед початком потрібно встановити Flask на вашому комп'ютері. Для цього скористаєтесь pip, вбудованим менеджером пакетів Python. Відкрийте термінал (або командний рядок) і введіть:
pip install flask
Ця команда встановить Flask і підготує його до використання у вашому проєкті. Після завершення ви зможете написати перший рядок коду.
Крок 2: Ваш перший Flask додаток
“Ласкаво просимо до Хогвартса!” 🏰
Добре, почнемо з малого. Ми напишемо простий додаток, який відображатиме повідомлення “Ласкаво просимо до Хогвартса!” при відвідуванні головної сторінки вашого сайту. Це як відкрити ворота Хогвартса та привітати відвідувачів.
from flask import Flask
# Створення Flask додатку
app = Flask(__name__)
# Опис маршруту головної сторінки
@app.route('/')
def welcome():
return "Ласкаво просимо до Хогвартса!"
# Запуск додатку
if __name__ == '__main__':
app.run(debug=True)
Ось ваш перший Flask додаток! Ось що відбувається:
- Імпортуємо Flask: Спочатку ми імпортуємо бібліотеку Flask. Це як сказати “Accio, Flask!” і підключити її до вашого проєкту.
- Ініціалізація додатку: Рядок
Flask(__name__)
створює додаток, який буде обробляти запити. - Опис маршруту:
@app.route('/')
створює маршрут для головної сторінки ('/'). Кожного разу, коли хтось відвідує головну сторінку за адресоюhttp://127.0.0.1:5000/
, Flask викликає функціюwelcome()
і повертає "Ласкаво просимо до Хогвартса!" - Запуск додатку:
app.run()
запускає сервер. Він працює локально.
Як запустити:
- Збережіть цей код у файл з назвою
app.py
. - Відкрийте термінал, перейдіть у папку з файлом і запустіть:
python app.py
Відкрийте веб-браузер і перейдіть за адресою http://127.0.0.1:5000/.
You’ll see the message, "Welcome to Hogwarts!” 🏰
Крок 3: Динамічні маршрути
“Я — капелюх розподілу Хогвартса, і я можу розподілити їх усіх!” 🎩
Тепер давайте додамо динамічний маршрут, який дозволить вам передавати ім'я через URL та сортувати вас у ваш факультет Хогвартса.
import random
from flask import Flask
app = Flask(__name__)
# Маршрут капелюха розподілу
@app.route('/sortinghat/')
def sorting_hat(name):
houses = ["Gryffindor", "Hufflepuff", "Ravenclaw", "Slytherin"]
house = random.choice(houses)
return f"Привіт, {name}! Ви потрапили до {house}."
if __name__ == '__main__':
app.run(debug=True)
Пояснення:
- Маршрут
/sortinghat/
дозволяє захопити ім'я з URL. Тому, якщо хтось відвідає/sortinghat/Harry
, функція прийме "Harry" як вхідні дані. - Потім ми випадковим чином вибираємо факультет (Грифіндор, Пуффендуй, Рейвенкло або Слизерин) за допомогою вбудованої функції Python
random.choice()
. - Функція
sorting_hat()
повертає персоналізоване повідомлення, яке вказує, до якого факультету вас розподілено.
Як це перевірити:
- Запустіть додаток знову (
python app.py
). - У браузері перейдіть за такими адресами:
http://127.0.0.1:5000/sortinghat/Harry
— на екрані з'явиться: "Привіт, Гаррі! Ви потрапили до Грифіндору."http://127.0.0.1:5000/sortinghat/Luna
— на екрані з'явиться: “Привіт, Луна! Ви потрапили до Рейвенкло.”
Крок 4: Повернення JSON даних
“Діагон-Алі — це вулиця з бруківкою, де студенти Хогвартса купують усе необхідне для навчання.” 🔮
У багатьох випадках, замість простого тексту, ви хочете надіслати структуровані дані. JSON (JavaScript Object Notation) — це формат для обміну даними, особливо між сервером і клієнтом.
Уявіть, що ви хочете надіслати інформацію про різні предмети (наприклад, інгредієнти для зілля або магічне приладдя з Діагон-Алі). Ви можете зробити це, надіславши структуровані дані у форматі JSON зі свого Flask додатку.
from flask import Flask, jsonify
app = Flask(__name__)
# Опис маршруту, що повертає JSON дані
@app.route('/diagonalley')
def get_items():
items = {
"wand": {"price": 10, "description": "Могутня чарівницька паличка."},
"broomstick": {"price": 20, "description": "Швидка та елегантна для квідичу."},
"cauldron": {"price": 5, "description": "Для варіння зіль."}
}
return jsonify(items)
if __name__ == '__main__':
app.run(debug=True)
Пояснення:
- jsonify(): Ця функція перетворює словник Python у формат JSON. У наведеному прикладі
items
— це словник, що містить список магічних предметів і їхні деталі (ціна, опис), який потім повертається у вигляді JSON відповіді. - Маршрут
/diagonalley
повертає структурований JSON об'єкт, що представляє список предметів.
Як це перевірити:
- Запустіть додаток і перейдіть за адресою
http://127.0.0.1:5000/diagonalley
. - Ви побачите JSON відповідь, схожу на цю:
{
"wand": {"price": 10, "description": "Могутня чарівницька паличка."},
"broomstick": {"price": 20, "description": "Швидка та елегантна для квідичу."},
"cauldron": {"price": 5, "description": "Для варіння зіль."}
}
Крок 5: Обробка помилок
Товари, яких немає в наявності…
Уявіть, що ви заходите до магазину на Діагон-Алі і питаєте про товар, якого немає в наявності.
Як би ви почувалися, якщо продавець просто дивився на вас? Досить розчаровуюче, чи не так?
Flask дозволяє вам обробляти помилки і надавати користувачам зрозуміле повідомлення, якщо щось йде не так.
Давайте змінемо попередній код, щоб обробити таку ситуацію.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/diagonalley/')
def get_item(item):
items = {
"wand": {"price": 10, "description": "Могутня чарівницька паличка."},
"broomstick": {"price": 20, "description": "Швидка та елегантна для квідичу."},
"cauldron": {"price": 5, "description": "Для варіння зіль."}
}
if item in items:
return jsonify({item: items[item]})
else:
return jsonify({"error": "Товар відсутній!"}), 404
if __name__ == '__main__':
app.run(debug=True)
Пояснення:
- Маршрут
/diagonalley/
приймає конкретний товар (наприклад, "wand"). - Якщо запитуваний товар є в магічному магазині, Flask поверне його деталі у форматі JSON.
- Якщо товар не знайдено, Flask поверне кастомне повідомлення про помилку у форматі JSON з кодом статусу
404
(що означає "Не знайдено").
Як це перевірити:
Перейдіть за такими URL-адресами після запуску додатку:
http://127.0.0.1:5000/diagonalley/wand
— Ви побачите деталі палички.http://127.0.0.1:5000/diagonalley/potions
— Отримаєте помилку404
з повідомленням "Товар відсутній!"
Обробляючи помилки таким чином, ви забезпечуєте, що користувачі вашого API завжди отримують зрозумілий зворотний зв'язок, навіть якщо щось йде не так.
Крок 6: Запуск Flask API
Кидаємо останнє закляття… 🧙
Після того, як ви написали весь код, настав час запустити Flask додаток. Для цього кроки такі:
- Збережіть файл з розширенням
.py
(наприклад,app.py
). - Відкрийте термінал, перейдіть до папки, де знаходиться файл, і введіть:
python app.py
Ви побачите виведення, що виглядатиме приблизно так:
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
- Відкрийте веб-браузер і перейдіть за адресою
http://127.0.0.1:5000/
.
Ваш Flask додаток тепер працює локально на вашому комп'ютері. Ви можете доступити різні маршрути і протестувати ваше API.
Вітаємо! Ви щойно створили своє перше API за допомогою Flask. Від простих привітань до випадкового сортування факультету та обробки запитів на магічні товари — ви побудували основу, яка може перетворитися на щось неймовірне. З Flask створення API — це просто, і тепер, коли ви знаєте основи, ви можете почати будувати складніші додатки.
Щасливого кодування, товаришу чарівнику! ✨
Перекладено з: The Beginner’s Guide to Flask API