Flacon de demande.args vs demande.formulaire
Ma compréhension est que request.args
dans le Flacon contenant l'URL des paramètres codés à partir d'un GET
demande, alors que request.form
contient POST
de données. Ce que je vais avoir du mal à saisir est pourquoi lors de l'envoi d'un POST
demande, en essayant d'accéder aux données avec request.form
renvoie une 400
erreur, mais quand j'essaye de l'ouvrir avec request.args
il semble bien fonctionner.
J'ai essayé d'envoyer la demande avec les deux Postman
et curl
et les résultats sont identiques.
curl -X POST -d {"name":"Joe"} http://127.0.0.1:8080/testpoint --header "Content-Type:application/json"
Code:
@app.route('/testpoint', methods = ['POST'])
def testpoint():
name = request.args.get('name', '')
return jsonify(name = name)
Vous devez vous connecter pour publier un commentaire.
Vous sont POST-ing JSON, ni
request.args
nirequest.form
fonctionne.request.form
ne fonctionne que si vous publiez des données avec le droit des types de contenu; des données de formulaire est soit Posté avec l'application/x-www-form-urlencoded
oumultipart/form-data
encodages.Lorsque vous utilisez
application/json
, vous n'êtes plus l'Affichage des données de formulaire. Utilisationdemande.get_json()
pour accéder JSON POSTE de données à la place:Comme vous le dites,
request.args
jamais contient des valeurs incluses dans la demande de la chaîne de requête, la partie facultative de l'URL après le?
point d'interrogation. Puisqu'il fait partie de l'URL, il est indépendant de la requête POST corps.Vos données json dans le roulage est mal, donc Flacon de ne pas analyser les données de formulaire.
Envoyer des données comme ceci:
'{"name":"Joe"}'