本问题已经有最佳答案,请猛点这里访问。
以下是我的Flask应用程序代码,这是非常基本的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27from 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的错误
顺便说一句,我在Windows cmd中运行此应用程序。
任何帮助都将受到欢迎,在此先感谢。
编辑:
调试后,问题出在
1
2username = request.json.get('username')
password = request.json.get('password')
这两个命令。 如果注释以上两行,则curl请求可以成功。 但是还是不知道原因
您可以附加完整的回溯吗? 仅400 bad request可能无法提供足够的信息。
添加图片以显示消息。 但是没有回溯信息。
我之前也遇到过这个问题。 如果在Windows cmd中使用curl,则可能需要使用双引号,并在JSON中转义那些引号。
1
2curl -i -X POST -H"Content-Type: application/json" -d
"{"username":"abc","password":"123"}" http://localhost:5000/api/users
这对我有用,在窗户上使用卷曲。 或者,可以使用一个应用来测试API(例如Postman)来格式化和发送请求
您的视图函数需要返回响应。 如果要返回空的响应正文,请添加以下内容:
1return ('',201)
到new_user()的末尾
是的,我想念我帖子中的回复部分。 但是将其添加到我的代码中,仍然是同样的问题。 那不是原因