1292 votes

Comment puis-je obtenir le corps entier de la requête POST en Python avec Flask?

Je veux être en mesure d'obtenir l'ensemble du corps POST de la demande comme une chaîne ou un descripteur de fichier que je peux lire, mais je suis incapable de trouver un moyen (je suis nouveau Flacon et Python pour le web). C'est ce que j'ai:

from flask import Flask

app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def parse_request():
    # obtain the whole post body here, in case the request is post...

COMME CETTE QUESTION EST D'OBTENIR BEAUCOUP DE POINTS DE VUE:

La réponse à cette question est de dire d'une façon qui ne fonctionne que si l' content-type n'est pas reconnu, celui-ci est plutôt demander comment obtenir les brutes entières de corps post indépendamment des en-têtes:

Recevoir des corps POST en Python Flacon quel que soit le Type de Contenu d'en-tête

2229voto

Robert Points 4974

Comme l'a suggéré, vous devez vérifier: http://flask.pocoo.org/docs/api/#flask.request

Dans les cas les plus courants, request.data va être vide, parce que, comme indiqué dans les docs, il est utilisé comme une solution de secours:

request.data Contient la requête d'entrée de données comme une chaîne de caractères dans le cas où il est venu avec un mimetype Flacon n'a pas de poignée.

  • Si vous souhaitez que les paramètres dans l'URL, vous devez utiliser request.args
  • Si vous voulez de l'info dans le corps (il serait d'envoyer un html POST formulaire de), vous devez utiliser request.form
  • Si vous souhaitez à la fois, vous devriez utiliser request.values

313voto

Fizer Khan Points 4128

C'est simplement comme suit

Pour le paramètre URL Query , utilisez request.args

 search = request.args.get("search")
page = request.args.get("page")
 

Pour l' entrée Form , utilisez request.form

 email = request.form.get('email')
password = request.form.get('password')
 

Pour le type de données application / json , utilisez request.data

 # data in string format and you have to parse into dictionary
data = request.data
dataDict = json.loads(data)
 

279voto

clyfish Points 3128
from flask import request
request.data

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X