2015-12-09 2 views
1

Следующая моя Колба приложение код, который является очень простой:локон отправить запрос пост для Колба питона приложение не удалось

from models import Base, User 
from flask import Flask, jsonify, request, url_for, abort 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import relationship, sessionmaker 
from sqlalchemy import create_engine 

from flask import Flask 

engine = create_engine('sqlite:///users.db') 

Base.metadata.bind = engine 
DBSession = sessionmaker(bind=engine) 
session = DBSession() 
app = Flask(__name__) 

@app.route('/api/users', methods = ['POST']) 
def new_user(): 
    username = request.json.get('username') 
    password = request.json.get('password') 
    print username 
    print password 



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

и использовать curl для отправки запроса HTTP POST в командной строке следующим образом:
curl -i -X POST -H "Content-Type: application/json" -d '{"username":"abc","password":"123"}' http://localhost:5000/api/users

но получить ошибку 400 BAD REQUEST

BTW, я бегу это приложение в окнах CMD.

любая помощь будет приветствоваться, спасибо заранее.

EDIT:
после отладки, после того, как проблема происходит от

username = request.json.get('username') 
password = request.json.get('password') 

эти две команды. Если вы прокомментируете эти две строки, запрос на завивку может быть успешным. Но до сих пор не знает причину

enter image description here

+1

Не могли бы вы добавить полную обратную линию? Просто «400 плохой запрос» может не предоставлять достаточную информацию. –

+0

Добавить изображение, чтобы показать сообщение. Но нет информации о возврате. –

+0

Я не могу воспроизвести вашу ошибку. Ошибка и строки, на которых это происходит, показывают, что вы не выполнили запрос приложения/json с действительным json, но на основании того, что вы опубликовали, вы это сделали. – davidism

ответ

0

Ваша функция просмотра должна возвращать ответ. Если вы хотите, чтобы вернуть пустое тело ответа, добавьте это:

return ('',201) 

до конца new_user()

+0

да, я пропускаю часть возврата в своем сообщении. Но добавьте его в свой код, по-прежнему та же проблема. Это не причина –

0

Я также столкнулся с этой проблемой раньше. Если вы используете curl в windows cmd, вам может понадобиться использовать двойные кавычки и избежать этих котировок в вашем JSON.

curl -i -X POST -H "Content-Type: application/json" -d 
"{\"username\":\"abc\",\"password\":\"123\"}" http://localhost:5000/api/users 
Смежные вопросы