对Flask python应用程序的curl发送post请求失败
以下是我的Flask应用程序代码,非常基本:对Flask python应用程序的curl发送post请求失败,curl,flask,Curl,Flask,以下是我的Flask应用程序代码,非常基本: 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
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-xpost-H“内容类型:应用程序/json”-d'{“用户名”:“abc”,“密码”:“123”}”http://localhost:5000/api/users
但是获得错误的
400错误请求
顺便说一句,我在windows cmd中运行此应用程序
欢迎任何帮助,提前感谢
编辑:调试后,问题来自
username = request.json.get('username')
password = request.json.get('password')
这两个命令。如果注释掉以上两行,curl请求就可以成功。但还是不知道原因
查看函数需要返回响应。如果要返回空的响应正文,请添加以下内容:
return ('',201)
在
new\u user()
的结尾,我以前也遇到过这个问题。如果在windows cmd中使用curl,您可能需要使用双引号,并在JSON中转义这些引号
curl -i -X POST -H "Content-Type: application/json" -d
"{\"username\":\"abc\",\"password\":\"123\"}" http://localhost:5000/api/users
你能附上完整的回溯吗?仅
400错误请求
可能无法提供足够的信息。请添加图片以显示消息。但是没有回溯信息。是的,我错过了我帖子中的返回部分。但在我的代码中添加它,仍然是相同的问题。对于我来说,在窗口上使用curl并不是这样做的原因。或者,您可以使用测试API的应用程序(如Postman)来格式化和发送请求