Приложение Flask - параметры запроса выпадают из аргументов запроса - PullRequest
0 голосов
/ 12 июня 2019

У меня есть простое приложение Flask (версия Flask 1.0.3) с одним приложением. URL /ask и обработчик для обработки строки запроса POST пар (имя, значение), но объект request.args хранит не все пары параметров, только первую пару. Почему остальные выбывают?

Я уже пытался распечатать объект request.args, но он показывает только первую пару параметров.

Вот приложение Flask

import json

from flask import (
    Flask,
    jsonify,
    request,
    Response
)


app = Flask(__name__)


@app.route('/')
def home():
    return jsonify(message="Hello, World!")


@app.route('/ask', methods=['POST'])
def ask():
    return str(request.args)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

Вот простой запрос с использованием инструмента CLI http с двумя параметрами и аргументами ответа - обратите внимание, что аргументы ответа содержат только первый параметр

$ http POST http://127.0.0.1:5000/ask?q1=name&q2=address
[1] 58720
[2019-06-12 15:29:27 $ HTTP/1.0 200 OK
Content-Length: 36
Content-Type: text/html; charset=utf-8
Date: Wed, 12 Jun 2019 14:29:27 GMT
Server: Werkzeug/0.15.4 Python/3.6.2

ImmutableMultiDict([('q1', 'name')])

Я получаю тот же результат, используя curl

curl -X POST http://127.0.0.1:5000/nest?q1=name&q2=address

Я что-то упускаю? 1020 *

1 Ответ

1 голос
/ 12 июня 2019

В оболочке «&» является ключевым словом и должно быть заключено в кавычки.В обоих ваших примерах все после «&» выполняется как вторая команда.Измените свой тест на:

http POST "http://127.0.0.1:5000/ask?q1=name&q2=address"
...