Я очень новичок в Flask (и Flask-Restful).
Моя проблема: json
аргументы для POST
устанавливаются на NONE
(не работают).
Я могу брать аргументы из form-data
, используя плагин POSTMAN
для chrome. Но когда я переключаюсь на raw
(и подаю json
), он не может прочитать json и присваивает NONE
всем моим аргументам.
Я прочитал некоторые связанные сообщения stackoverflow, связанные с этим: link1, link2, link3 ... ни один из них мне не помог.
Я использую python-2.6
, Flask-Restful-0.3.3
, Flask-0.10.1
, Chrome
, POSTMAN
в Oracle Linux 6.5.
Код Python 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)
Проверка с использованием POSTMAN
:
- Использование
form-data
: работает отлично! - Использование
raw
->json
: вызывает эту проблему
Попытки №1 :
Добавьте параметр json
к моему методу add_argument()
в 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
: { "имя пользователя": "привет", "пароль": "мир" }
Output
: { "p": "Нет", "u": "Нет" }
Попытки №2:
Измените тип на unicode
в методе add_argument()
в 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
: { "имя пользователя": "привет", "пароль": "мир" }
Output
: { "p": "Нет", "u": "Нет" }
PS: я буду обновлять свой вопрос при каждой неудачной попытке. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы сделать этот вопрос более ясным.
parser.parse_args()
. У вас должно бытьargs = parser.parse_args()
, прежде чем вы сможете получить доступ кargs
- person junnytony   schedule 27.05.2015unicode
вместоstr
для типов аргументов - person sirfz   schedule 27.05.2015unicode
имеет ту же проблему, сохраняетNone
- person sudhishkr   schedule 27.05.2015