从 JS 发布到烧瓶端点的数据未在端点中处理
Data posted to flask endpoint from JS not processed in endpoint
我写了一个简单的待办事项应用程序,反应充当前端和烧瓶处理来自数据库的 CRUD。该应用程序使用 axios 来处理请求; GET
完成得很好,但是当尝试 POST
JSON 烧瓶 api returns 时出现 400 错误。这是一些精简的示例代码。
JS POST 函数。
function testPost(){
axios.post('http://'+window.location.hostname+':8000/todo/', {
title: "test123",
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
}
服务器端
class Todo(Resource):
def post(self): # create a new todo
conn = pool.getconn()
cur = conn.cursor()
app.logger.info(request.form['title'])
cur.execute("INSERT INTO todo (task, done) VALUES (%s, %s)", (request.form['title'], False))
conn.commit()
app.logger.error(e)
cur.close()
pool.putconn(conn)
其他方法未显示
然后服务器代码的其余部分将资源附加到 api 和 CORS 设置(未按文件顺序显示)
app = Flask(__name__)
CORS(app, methods=['POST','GET','PUT','DELETE'])
api = Api(app)
api.add_resource(Todo, '/todo/')
app.run(debug = True, host='0.0.0.0', port=port)
测试
使用 python 测试 api 工作正常,运行 这在单独的 python 文件中将添加到数据库中。
response = requests.post(URL + "todo/", data={"title": f"test{randint(1, 100)}"})
我最好的猜测是 axios 没有以后端无法处理的方式将数据添加到请求中。在使用 axios 之前,我尝试使用 XMLHttprequest 发出请求,但这提出了同样的问题。鉴于其所谓的改进的简单性,我根据其他人的推荐换成了 axios。
request.form['key']
和request.get_json()['key']
是完全不同的字段python 请求,我用它发帖给前者,js发帖给后者。修改函数以使用任何可用的函数修复此问题。
我写了一个简单的待办事项应用程序,反应充当前端和烧瓶处理来自数据库的 CRUD。该应用程序使用 axios 来处理请求; GET
完成得很好,但是当尝试 POST
JSON 烧瓶 api returns 时出现 400 错误。这是一些精简的示例代码。
JS POST 函数。
function testPost(){
axios.post('http://'+window.location.hostname+':8000/todo/', {
title: "test123",
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
}
服务器端
class Todo(Resource):
def post(self): # create a new todo
conn = pool.getconn()
cur = conn.cursor()
app.logger.info(request.form['title'])
cur.execute("INSERT INTO todo (task, done) VALUES (%s, %s)", (request.form['title'], False))
conn.commit()
app.logger.error(e)
cur.close()
pool.putconn(conn)
其他方法未显示
然后服务器代码的其余部分将资源附加到 api 和 CORS 设置(未按文件顺序显示)
app = Flask(__name__)
CORS(app, methods=['POST','GET','PUT','DELETE'])
api = Api(app)
api.add_resource(Todo, '/todo/')
app.run(debug = True, host='0.0.0.0', port=port)
测试
使用 python 测试 api 工作正常,运行 这在单独的 python 文件中将添加到数据库中。
response = requests.post(URL + "todo/", data={"title": f"test{randint(1, 100)}"})
我最好的猜测是 axios 没有以后端无法处理的方式将数据添加到请求中。在使用 axios 之前,我尝试使用 XMLHttprequest 发出请求,但这提出了同样的问题。鉴于其所谓的改进的简单性,我根据其他人的推荐换成了 axios。
request.form['key']
和request.get_json()['key']
是完全不同的字段python 请求,我用它发帖给前者,js发帖给后者。修改函数以使用任何可用的函数修复此问题。