Python-Flask-Restful-POST nicht unter JSON-Argumente

Ich bin ganz neu Kolben (& Kolben-Restful).

Mein problem : json Argumente für eine POST eingerichtet wird, um NONE (funktioniert nicht).

Ich bin in der Lage, Argumente aus der form-data mit POSTMAN plugin für chrome. Aber, wenn ich wechseln raw (& feed ein json), es nicht zu Lesen der json & weist eine NONE alle meine Argumente.

Ich habe einige Verwandte stackoverflow-posts zu diesem Zusammenhang : link1, link2, link3 ... keines von diesen hat mir geholfen.

Ich bin mit python-2.6, Flask-Restful-0.3.3, Flask-0.10.1, Chrome, POSTMAN auf Oracle Linux 6.5.

Python-code app.py :

from flask import Flask, jsonify
from flask_restful import reqparse, abort, Api, Resource

app = Flask(__name__)
api = Api(app)

parser = reqparse.RequestParser()
parser.add_argument('username', type=str)
parser.add_argument('password', type=str)

class HelloWorld(Resource):
    def post(self):
        args = parser.parse_args()
        un = str(args['username'])
        pw = str(args['password'])
        return jsonify(u=un, p=pw)

api.add_resource(HelloWorld, '/testing')

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

Testen dieser mit POSTMAN :

  • Mit form-data : funktioniert perfekt !
  • Mit raw -> json : dieses Problem verursacht

Sachen ausprobiert #1 :

Hinzufügen json parameter, um meine add_argument() Methode in app.py

parser = reqparse.RequestParser()
parser.add_argument('username', type=str, location='json') # added json
parser.add_argument('password', type=str, location='json') # added json

Input : { "username": "Hallo", "password": "Welt" }

Output : { "p": "Keine", "u": "None" }

Sachen ausprobiert #2 :

Typ ändern, um unicode im add_argument() Methode in app.py

parser = reqparse.RequestParser()
parser.add_argument('username', type=unicode, location='json') # change type to unicode
parser.add_argument('password', type=unicode, location='json') # change type to unicode

Input : { "username": "Hallo", "password": "Welt" }

Output : { "p": "Keine", "u": "None" }


PS :
Ich werde halten Aktualisierung meiner Frage, mit jedem gescheiterten Versuch.
Bitte lassen Sie mich wissen, wenn Sie brauchen mehr info, um diese Frage klarer.

  • Sieht für mich wie Sie fehlt ein Aufruf parser.parse_args(). Sollten Sie args = parser.parse_args() bevor Sie Zugriff auf die args
  • seine ein Tippfehler von meiner Seite, ich habe vergessen, zu kopieren, in der Zeile. Bearbeiten Sie die Frage sofort!
  • Versuchen unicode statt str für die Argumente Typen
  • unicode hat das gleiche Problem, behält None
InformationsquelleAutor sudhishkr | 2015-05-27
Schreibe einen Kommentar