flask restful и ошибка sqlalchemy: uname: отсутствует обязательный параметр в теле JSON

 parser = reqparse.RequestParser()
 parser.add_argument('uname', type = unicode, required = True, location= 'json')
 parser.add_argument('pword', type = unicode, required = True, location= 'json')
 parser.add_argument('fname', type = unicode, required = True, location= 'json')
 parser.add_argument('lname', type = unicode, required = True, location= 'json')
 parser.add_argument('gender', type = unicode, required = True, location= 'json')
 parser.add_argument('email_id', type = unicode, required = True, location= 'json')

 session= Session()
 class store_user(Resource):
    def post(self):
        #args=request.get_json(force = True)
        args = parser.parse_args()
        unq_id = str(uuid.uuid4()) 

        user_data = {'uid' : unq_id, 'username' : args['uname'], 'password' : args['pword'], 'f_name' : args['fname'],              
                        'l_name' : args['lname'], 'sex' : args['gender'], 'email_id' : args['email_id']}
        auser = user(uid = user_data['uid'], username = user_data['username'], password = user_data['password'], f_name =
                    user_data['f_name'], l_name = user_data['l_name'], sex =
                    user_data['sex'], email_id = user_data['email_id'])
        session.add(auser)
        session.commit()    


        #return user_data
        #return jsonify(auser)

 api.add_resource(store_user, '/user', endpoint='user')

Я получаю сообщение об ошибке при добавлении новых данных в базу данных. пользователь — это класс, сопоставленный с таблицей user_info, а пользователь — объект пользовательского класса. У меня возникла проблема при анализе данных запроса, но я не могу ее решить. Ниже приведен вывод терминала с помощью команды curl:

команда:

curl http://127.0.0.1:5000/user -d "uname= man, pword= uuoiuu, fname= manish, lname= kumar, поле= мужчина, emailid= [email protected]" -X POST -v

выход:

> * Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> POST /user HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 127.0.0.1:5000
> Accept: */*
> Content-Length: 99
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 99 out of 99 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 400 BAD REQUEST
< Content-Type: application/json
< Content-Length: 90
< Server: Werkzeug/0.9.4 Python/2.7.6
< Date: Thu, 28 Jan 2016 07:31:56 GMT
< 
{
    "message": {
        "uname": "Missing required parameter in the JSON body"
    }
}

person Manish Kumar    schedule 28.01.2016    source источник
comment
кто-нибудь, пожалуйста, отредактируйте это... отчаянно нуждаюсь в помощи здесь... я новичок в python   -  person Manish Kumar    schedule 28.01.2016
comment
Было бы полезно добавить хотя бы сообщение об ошибке.   -  person René Vogt    schedule 28.01.2016
comment
Проверь это сейчас. Я включил вывод на терминал.   -  person Manish Kumar    schedule 28.01.2016
comment
Не могли бы вы также показать нам команду curl, которую вы отправили?   -  person Joern Boegeholz    schedule 28.01.2016
comment
тоже сделал...теперь можешь проверить   -  person Manish Kumar    schedule 28.01.2016


Ответы (2)


Я думаю, что есть две проблемы с вашей командой curl:

  1. Вам нужно передать -H "Content-Type: application/json", чтобы показать, что вы будете отправлять данные json (посмотрите на это ответ)

  2. Вы должны передать свои данные как данные json:

    '{"имя":"человек","парслов":"ууойуу"}'

person Joern Boegeholz    schedule 28.01.2016

Вы должны правильно отформатировать входные данные либо в формате JSON (с заголовком «Content-Type: application/json»), либо в формате URL. Поскольку вы указали location=json в определении аргумента, вы должны отформатировать его в формате JSON с заголовком Content-Type.

Вот ваша команда снова: curl http://127.0.0.1:5000/user -H 'Content-Type: application/json' -d '{"uname":"man", "pword":"uuoiuu", "fname":"manish", "lname":"kumar", "gender":"male", "emailid":"[email protected]}' -X POST -v

person Kelly Keller-Heikkila    schedule 28.01.2016
comment
Рад это слышать. Если ответ был правильным и помог вам, пожалуйста, нажмите на галочку, чтобы другие знали, что это помогло. - person Kelly Keller-Heikkila; 28.01.2016