Введение
В этом руководстве вы узнаете, как создать простую REST API с использованием Flask, легкого веб-фреймворка на Python. Мы покроем основы установки приложения Flask, определения маршрутов, обработки запросов и возвращения JSON-ответов. By the end of this tutorial, you will have a working API that you can extend and integrate with other applications.
Предупреждения
-
Сервер, выполняющий Ubuntu, и пользователь с правами sudo и активной firewall. Чтобы получить инструкции по установке, пожалуйста выберите свою дистрибутив из этого списка и следуйте нашему руководству по настройке начального сервера. Убедитесь, что работаете с поддерживаемой версией Ubuntu.
-
Знакомство с командной строкой Linux. Для введения или обновления знаний о командной строке вы можете просмотреть это руководство Linux command line primer
-
Основные знания по программированию на Python.
-
Python 3.7 или более высокая версия установлена на вашей системе Ubuntu. Чтобы узнать, как запустить сценарий Python на Ubuntu, вы можете обратиться к нашему учебнику Как запустить сценарий Python на Ubuntu.
Step 1 — Setting Up Your Flask Environment
Ubuntu 24.04 поставляется с Python 3 по умолчанию. Откройте терминал и выполните следующий приказ, чтобы убедиться в установке Python 3:
Если Python 3 уже установлен на вашей машине, этот приказ вернёт текущую версию установки Python 3. Если он не установлен, вы можете выполнить следующий приказ и установить Python 3:
Далее вам необходимо установить installeр пакетов pip
на вашей системе:
一旦 pip
установлен, далее мы установим Flask.
Вы будете устанавливать Flask с помощью pip
. Рекомендуется выполнять эту операцию в виртуальной среде, чтобы избегать конфликтов с другими пакетами на вашей системе.
Шаг 2 — Создание приложения Flask
Следующий шаг — написание Python-кода для приложения Flask. Чтобы создать новый скрипт, перейдите в выбранный вами каталог:
Внутри каталога создайте новый Python-файл, app.py,
и импортируйте Flask. Затем инициализируйте Flask-приложение и создайте базовый маршрут.
Это откроет пустой текстовый редактор. Здесь вы можете написать вашу логику или скопировать следующий код:
Шаг 3 — Создание RESTful маршрутов
В этом разделе мы будем определять маршруты в нашем Flask-приложении, соответствующие различным действиям, которые пользователь может выполнять с API. Каждый маршрут будет обрабатывать конкретный HTTP-метод.
GET
, POST
, PUT
, и DELETE
. Эти методы соответствуют четырём основным операциям持久的存储—часто обозначаемым как CRUD (Create, Read, Update, Delete).
Добавьте следующие маршруты в ваш скрипт Python app.py
:
Узнайте больше о том, что делает каждая функция:
-
Flask Imports: The code imports necessary components from Flask:
Flask
,jsonify
, andrequest
. -
In-Memory Data Store:
items
is a simple list of dictionaries that acts as a temporary data store for the API. Each item has anid
and aname
. -
GET
/api/items
: При выполнении запросаGET
к/api/items
сервер возвращает список всех элементов из хранилища данных элементов. Это полезно для извлечения всех ресурсов в коллекции. -
POST
/api/items
: Запрос POST к/api/items
позволяет клиенту создать новый элемент. Сервер ожидает JSON-объект, содержащий детали нового элемента, в теле запроса. После создания элемента сервер отвечает созданным элементом и кодом статуса201 Created
. -
PUT
/api/items/<int:item_id>
: ЗапросPUT
к/api/items/<item_id>
используется для обновления существующего элемента с указаннымitem_id
. Клиент посылает обновленные данные в теле запроса, и сервер модифицирует существующий элемент. Если элемент не найден, сервер возвращает ошибку404 Not Found
. -
DELETE
/api/items/<int:item_id>
: ЗапросDELETE
к/api/items/<item_id>
удаляет элемент с указаннымitem_id
из хранилища данных. Если элемент успешно удален, сервер отвечает с кодом состояния204 No Content
, что указывает на успешное удаление и отсутствие дальнейшего содержимого для возврата. -
Запуск приложения: Блок
if __name__ == "__main__":
гарантирует, что приложение Flask запустится при непосредственном выполнении скрипта.
шаг 4 — запуск и тестирование API
Запустите сервер Flask следующим образом:
Вы должны увидеть, что Flask сервер запущен следующим выводом:
Согласно вышедшему выводу вы можете заметить, что сервер запущен на http://127.0.0.1
и выполняет прослушивание на порте 5000
.
Теперь вы можете тестировать endpoint с использованием curl
, Postman или другого HTTP-клиента. В этом учебнике вы будете использовать curl
, чтобы тестировать endpoint и отправлять HTTP-запросы.
Откройте другой консоль Ubuntu и выполните одну за другой следующие команды curl
:
- GET:
curl http://127.0.0.1:5000/api/items
- POST:
curl -X POST -H "Content-Type: application/json" -d '{"name": "This is item 3"}' http://127.0.0.1:5000/api/items
- PUT:
curl -X PUT -H "Content-Type: application/json" -d '{"name": "This is updated item 1"}' http://127.0.0.1:5000/api/items/1
- DELETE:
curl -X DELETE http://127.0.0.1:5000/api/items/1
Посмотрим, каждая из этих команд действует:
Вы заметите, что сервер возвращает список всех элементов в элементах базе данных.
Используя метод POST
, добавим новый элемент в базу данных.
Примечание: На вашем другом консоле, где запущен Flask сервер, вы заметите все выполненные HTTP-запросы и их коды ответа тоже.
Это отличный способ мониторить, отлаживать и решать проблемы с сервером.
next, let’s execute a PUT
request. A PUT
request to /api/items/<item_id>
will update an existing item with the specified item_id
.
Now, let’s execute a GET
request to see the updated item 1.
Finally, let’s execute a DELETE
request to delete an item from the datastore.
This will delete item 1 from the data store.
To verify this, let’s execute a GET
request.
Вы заметите, что элемент 1 уже не присутствует и был永久но удалён.
Заключение
В этом учебнике вы построили базовую приложение REST API с использованием Flask. Теперь вы можете расширить эту API добавив дополнительные маршруты, интегрировать с базой данных или развернуть её на облачной платформе, такой как DigitalOcean. Flask является мощным инструментом для быстрой и эффективной разработки API, и с этими основаниями вы готовы начать строительство более сложных приложений.
Source:
https://www.digitalocean.com/community/tutorials/create-a-rest-api-using-flask-on-ubuntu