对Flask python应用程序的curl发送post请求失败

对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

以下是我的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_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)来格式化和发送请求