从 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发帖给后者。修改函数以使用任何可用的函数修复此问题。