Как я могу отправить данные json вместе с файлом в запросе curl для обработки Flask?

Проблема:

Я хочу отправить файл с -F вариант и наряду с данными JSON с -d к маршруту колбы. Но только я могу реализовать.

Код я пробовал.

curl -X POST -H «Content-Type: application / json» -d ‘{«username»: «xyz», «password»: «xyz»}’ http://192.168.150.113/test

Код Колбы:

@app.route('/test',methods = ['GET', 'POST'])
def test():
if request.method == 'POST':
data = request.data
data = json.loads(data)
return 'success'

Только с файлом:

curl -X POST -F [email protected] http://192.168.150.113/test
@app.route('/process' , methods = ['GET', 'POST'])
def process():
if request.method == 'POST':
f = request.files['file']
if f:
try:
filename = secure_filename(f.filename)
f.save( os.path.join(app.config['UPLOAD_FOLDER'], filename ))
return 'success'

Но без отправки отдельного запроса я хочу объединить эти два запроса POST и обработать их с помощью колбы.

Есть ли способ, которым я могу сделать это?

-1

Решение

Используйте опцию -F для отправки данных с multipart/form-data

curl -X POST -H "Content-Type: multipart/form-data" -F "[email protected]" -F "username=xyz" -F "password=xyz" http://localhost:5000/test
1

Другие решения

Вы не можете отправить файл с JSON вместе, так как они имеют разные Content-Type, Кроме того, вы можете записать свой JSON и отправить их с multipart/form-data, Например, вы можете отправить form как следующее:

curl -X POST -H "Content-Type: multipart/form-data" -F "[email protected]" -F "json_data='{\"username\":\"xyz\",\"password\":\"xyz\"}'" http://localhost:5000/test

И в Python, вы можете получить этот JSON request.form.get("json_data"), Это более надежно, чем передача пар ключ-значение через обычный multipart/form-data поскольку это поддерживает намного более сложную структуру.

1

По вопросам рекламы [email protected]