Pourquoi je ne peux pas afficher le nom de la variable?

Quand j'entre:

curl --data "name=value1" http://127.0.0.1:5000/echo 

La sortie est:

ECHO : POST

J'attends aussi:

value1

Voici le code:

from flask import Flask, request
app = Flask(__name__)

@app.route('/echo', methods = ['POST'] )
def api_echo():
    if request.method == 'POST':
        print "ECHO : POST\n"
        print request.args['name']
if __name__ == '__main__':
    app.run()
0
4m1nh4j1 7 mars 2016 à 18:51

3 réponses

Meilleure réponse

Les données que vous recherchez se trouvent dans request.form et non request.args:

def api_echo():
    if request.method == 'POST':
        print "ECHO : POST\n"
        print request.form['name']

Cela imprime:

ECHO : POST

val1

Vous ne retournez rien du point final api_echo. Curl génère une erreur, malgré l'instruction print apparaissant dans les journaux python. Vous devez ajouter une valeur return à la fonction.

0
Andy 7 mars 2016 à 16:05
from flask import Flask, request
app = Flask(__name__)

@app.route('/echo', methods = ['POST'] )
def api_echo():
    if request.method == 'POST':
        #changing "args" to "form" did the trick
        print request.form['name']
if __name__ == '__main__':
    app.run()
1
jDo 7 mars 2016 à 16:06

Pour obtenir les données de request.args, faites la demande suivante:

curl -X POST http://127.0.0.1:5000/echo?name=value1
0
Haleemur Ali 7 mars 2016 à 16:13