Отправка данных JSON во Flask с помощью запросов на Python

Представьте, что вы работаете над созданием приложения Flask и вам нужно отправить postданные JSON в приложение. В этом уроке мы узнаем, как отправлять данные JSON в приложение Flask с помощью запросов.

Но перед этим нам необходимо понять основы Flask, библиотеки запросов и данные JSON.

Чтобы отправить данные JSON в приложение Flask с помощью библиотеки Requests в Python, создайте клиентский скрипт, который определяет URL и данные JSON, и используйте requests.post() для отправки запроса POST в приложение Flask. В приложении Flask обработайте входящий запрос POST, извлеките данные JSON с помощью request.json и верните соответствующий ответ. Вы также можете разрешить запросам GET извлекать данные JSON из приложения Flask, изменив декоратор @app.route() и обработав запрос GET соответствующим образом.

Введение в Flask и данные JSON

Flask — это фреймворк веб-приложений Python, который призван помочь разработчикам создавать легкие веб-приложения. Flask позволяет разрабатывать потрясающие веб-приложения с минимальными требованиями к коду.

Его можно установить с помощью следующего кода.

pip install flask

Давайте рассмотрим пример создания базовой программы Hello Wprls с использованием Flask. Прежде чем перейти к программе, нам нужно понять, что по умолчанию приложение Flask запускается на локальном сервере хоста (http://localhost:5000/).

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello, World!'
if __name__ == '__main__':
    app.run(debug=True)

В первой строке мы импортируем модуль Flask из библиотеки.

Далее мы создаем экземпляр для объекта приложения в следующей строке. Экземпляр сохраняется в объекте app.

Это декоратор app.route, используемый для объявления конечной точки или URL, в котором необходимо развернуть приложение. URL, используемый в этом коде, является URL по умолчанию – http://localhost:5000/.

Далее мы создаем функцию для вывода сообщения Hello,World! на веб-страницу.

Мы запускаем эту программу с использованием app.runметода.

Привет, мир с использованием Flask

Requests: HTTP для людей

Модуль Requests используется для отправки HTTP-запросов с использованием Python для получения данных ответа HTTP URL.

Эту библиотеку можно установить с помощью следующей команды.

pip install requests

С модулем запросов мы можем получать запросы, используя метод get, и отправлять запросы, используя метод post. Мы увидим использование этих методов в демонстрации.

Понимание структуры данных JSON

JSON (JavaScript Object Notation) хранит и передает данные через Интернет. Он напоминает словарь в Python и известен своей легкостью и быстротой.

Вот пример массива JSON.

"name_age":[
    {"name":"X", "age":20},
    {"name":"Y", "age":18"},
    {"name":"Z", "age":22}
]

Отправка данных JSON в приложение Flask

Используя модуль запросов, мы отправим такие данные JSON в приложение Flask.

Создание клиентского скрипта

Сначала мы должны создать файл Python для хранения данных JSON. В этом примере я создал файл Python с именем client.py, который содержит данные JSON.

import requests
url = 'http://localhost:5000/api/data'
json_data = {
    'Name': 'VD',
    'Job':'Dev',
}
response = requests.post(url, json=json_data)
if response.status_code == 200:
    print('JSON data sent successfully!')
else:
    print('Failed to send JSON data:', response.status_code)

Теперь мы импортируем модуль запросов. Затем мы определяем URL, по которому будет развернуто приложение. Далее мы определяем json_data, который имеет две пары ключ-значение — Имя и Работа. Затем мы создаем объект запросов для публикации данных в URL. Для каждого отправленного нами запроса мы получаем код ответа. В случае 200 мы успешно отправили данные в приложение.

Создание приложения Flask

Далее мы создаем еще один файл для приложения Flask. В этом примере мы используем apptest.py.

from flask import Flask, request

app = Flask(__name__)

@app.route('/api/data', methods=['POST'])  
def api_data():
    if request.method == 'POST':
        data = request.json 
        print('Received JSON data:', data)
        return 'JSON data received successfully!', 200
    else:
        return 'Method Not Allowed', 405

if __name__ == '__main__':
    app.run(debug=True)

В этом файле мы пишем код для развертывания приложения на сервере. В декораторе app.route мы определяем конечную точку приложения, которая является URL. Разрешенный метод — POST, который используется для отправки запросов в приложение. В функции api_data мы проверяем, является ли метод POST, и используем несколько операторов return, чтобы проверить, успешно ли отправлены данные в приложение.

После того, как оба файла будут сохранены, нам нужно выполнить их client.pyв терминале.

Данные успешно отправлены

Данные успешно отправлены

И мы можем видеть данные в терминале файла apptest.py, что свидетельствует о том, что данные были успешно отправлены в приложение.

Полученные данные JSON

Полученные данные JSON

Давайте проверим, увидим ли мы те же результаты в URL локального хоста – http://localhost:5000/api/data.

Метод не разрешен

Метод не разрешен

Это происходит потому, что в apptest.py мы разрешаем только метод POST. Если мы разрешим метод GET в декораторе app.route, мы также сможем увидеть данные JSON на веб-странице.

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/api/data', methods=['GET', 'POST'])  
def api_data():
    if request.method == 'POST':
        data = request.json  
        print('Received JSON data:', data)
        return 'JSON data received successfully!', 200
    elif request.method == 'GET':
           json_data = {
            'Name': 'VD',
            'Job': 'Dev',
        }
        return jsonify(json_data)

if __name__ == '__main__':
    app.run(debug=True)

В декораторе мы добавили метод GET. В дополнение к этому мы также включили оператор if-else для обработки запросов. Это позволяет нам получать данные из приложения Flask на локальном сервере хоста.

Получить запросы

Мы собрали коллекцию интересных руководств по Flask на нашей платформе. Пожалуйста, ознакомьтесь с ними!

Краткое содержание

В этом уроке мы обсудили основы фреймворка Flask, модуль запросов и данные JSON.

После этого мы использовали модуль запросов для успешной отправки данных JSON в приложение Flask. В примере также было показано, как получить данные ответа с помощью двух методов декораторов Flask.

Цель этого руководства — познакомить вас с созданием веб-приложений с использованием фреймворка Flask. С этими основами мы можем сделать гораздо больше, например, развернуть модели ML в Интернете и создать интересные приложения. Счастливого кодирования!

Ссылки

Документация Flask

Запросы документации

Автор

Фото аватара

Владимир Михайлов

Программист на Python с большим количеством опыта и разнообразных проектов.