2015-12-09 75 views
1

以下是我的瓶的应用程序代码,这是很基本的:卷曲发送POST请求瓶Python应用程序失败

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中的窗口。

任何帮助将受到欢迎,在此先感谢。

编辑:
调试完毕后,之后的问题来自

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

这两个命令。如果注释掉上述两行,curl请求可以成功。但还是不知道

enter image description here

+1

你能追加完整的回溯?只是'400坏请求'可能无法提供足够的信息。 –

+0

添加图片以显示消息。但没有回溯信息。 –

+0

我无法重现您的错误。错误及其发生的线条表明您没有使用有效的json发布应用程序/ json请求,但是根据您发布的内容,您做了。 – davidism

回答

0

您的视图函数需要返回响应的原因。如果你想返回一个空的响应主体,补充一点:

return ('',201) 

new_user()

+0

是的,我错过了我的文章中的回报部分。但将其添加到我的代码中,仍是同样的问题。这不是原因 –

0

末我也遇到过这个问题。如果在Windows cmd中使用curl,则可能需要使用双引号,并在JSON中转义这些引号。

curl -i -X POST -H "Content-Type: application/json" -d 
"{\"username\":\"abc\",\"password\":\"123\"}" http://localhost:5000/api/users