Как отдать json файл на сервер Flask?
Подскажите, пожалуйста, как отдать json файл на сервер во Flask.
Как делаю я:
@app.route("/api/user_projects/<student_email>", methods=["GET"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return json.dumps(a) |
@app.route("/api/user_projects/<student_email>", methods=["GET"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return json.dumps(a)
В переменной a - массив.
На сервере получаю:
Дополнительно:
твои вопросы уже правили, нафига ты опять кучу тегов поставил?
Ответы:
GET не используется для отправки данных. В общем случае необходимо отправлять методом POST, изучите спецификации методов. И не путайте отправку с получением, а сервер с клиентом.
-
Если делаю POST, выдает такую ошибку
- p1ugg, да, потому что у тебя нет такого метода на сервере фласк
Я вычленил смысл твоего вопроса, он должен звучать следующим образом: как в фласке вернуть json на гет запрос.
Ответ: https://flask.palletsprojects.com/en/3.0.x/quickst... - p1ugg, у тебя обработка только GET, добавь обработку пост запроса, и сделай пост запрос через другой файл и выведи то что вернёт тебе сайт
@app.route("/api/user_projects/<student_email>", methods=["GET", "POST"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return json.dumps(a)
@app.route("/api/user_projects/<student_email>", methods=["GET", "POST"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return json.dumps(a)
Отправить запрос:
import requests respounse = requests.post('домен/api/user_projects/{почта}').json() print(respounse)
import requests respounse = requests.post('домен/api/user_projects/{почта}').json() print(respounse)
- Xacker Name, он неправильно сформулировал вопрос, у него ошибка в том что он отдает строку а не структуру данных и фласк не понимает что нужно json отдавать.
- должно быть return a короче говоря
- chemdev, ну и ладно, пусть в любом случае попробует сделать то что я написал, вдруг ему именно это надо
- Xacker Name, у тебя ошибка в коде, json.dumps будет неправильно отдаваться.
- chemdev,
Xacker Name,@app.route("/api/user_projects/<student_email>", methods=["GET", "POST"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return a
@app.route("/api/user_projects/<student_email>", methods=["GET", "POST"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return a
Так тоже пробовал, но на сервере получаю
- p1ugg, блин то что ты называешь сервером это в данном случае КЛИЕНТ. То, что ты там получаешь, зависит от того, как там обрабатывается ответ.
- p1ugg, return a сделай json.damps
и вообще перед ретурн попробуй сделать принт переменной а
- я вообще не понимаю что ты хочешь сделать
- Xacker Name,
json.dumps то же самое возвращает
- Xacker Name, Я хочу чтобы, вот данные выше отобразились в формате json на страничке
- Xacker Name,
return a сделай json.damps
Документация фласк:
A common response format when writing an API is JSON. It’s easy to get started writing such an API with Flask. If you return a dict or list from a view, it will be converted to a JSON response.
Перевод:
Распространенным форматом ответа при написании API является JSON. Начать писать такой API с помощью Flask легко. Если вы вернете из представления dict или list, оно будет преобразовано в ответ JSON.
Зачем ты советуешь ему неправильные вещи?
- p1ugg, нет он возвращает строку. Ладно, я дал все необходимое, чтобы ты разобрался.
- p1ugg, нет у тебя никакой проблемы, открой уже для себя про кодирование не ascii символов в json.dumps по умолчанию
- Everything_is_bad, я пробовал декодировать, у меня не получалось
- chemdev, то что ты скинул не помогает
- p1ugg, попробуй так
from flask import jsonify @app.route("/api/user_projects/<student_email>", methods=["GET", "POST"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return jsonify(a)
from flask import jsonify @app.route("/api/user_projects/<student_email>", methods=["GET", "POST"]) def get_projects_names_by_student_email(student_email): a = cabinet_client.get_projects_names_by_student_email(student_email) return jsonify(a)
- p1ugg, не нужно это декодировать, сделай тот же print, нормально это выведет, хотя ты не рассказываешь где и как ты это используешь
- Xacker Name, не помогает(
- p1ugg, пошли в телегу я уже устал обновлять страницу
- Xacker Name, + @dnsadnadnd241
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос



Для того чтобы отдать JSON файл на сервер Flask, вам необходимо выполнить следующие шаги:
1. Создайте экземпляр Flask:
from flask import Flask app = Flask(__name__)
2. Создайте маршрут для обработки запроса и возврата JSON:
@app.route('/get_json', methods=['GET']) def get_json(): data = {'key1': 'value1', 'key2': 'value2'} return jsonify(data)
3. Запустите сервер Flask:
if __name__ == '__main__': app.run()
После запуска сервера вы сможете обратиться к маршруту `/get_json` и получить JSON файл с данными `{'key1': 'value1', 'key2': 'value2'}`.
Таким образом, вы можете легко отдать JSON файл на сервер Flask, используя вышеприведенный код. Не забудьте импортировать необходимые модули, такие как `Flask` и `jsonify`, для корректной работы кода.