Flask开发TODO应用POST接口返回404 URL未找到错误如何解决
404错误产生原因
你在Flask主程序中定义的新增待办接口路由为/item/new,仅支持POST请求,但你使用curl测试时请求的路径为/item,二者路径完全不匹配,服务器无法找到对应处理逻辑,因此返回404 Not Found错误。
解决方法
二选一即可:
- 修改curl请求路径,和代码定义的路由保持一致,修正后的测试命令如下:
curl -X POST http://127.0.0.1:5000/item/new -d '{"item": "Setting up Flask"}' -H 'Content-Type: application/json'
- 如果你希望使用
/item作为接口路径,修改Flask代码中的路由装饰器即可:
将@app.route('/item/new', methods = ['POST'])改为@app.route('/item', methods = ['POST']),重启Flask服务后原curl命令即可正常运行。
额外注意事项
如果修改路径后遇到其他报错,可优先排查两个点:
- Windows系统下运行curl时,单引号会被识别为无效字符,需要将单引号替换为双引号,内部的JSON双引号前加转义符:
curl -X POST http://127.0.0.1:5000/item/new -d "{\"item\": \"Setting up Flask\"}" -H "Content-Type: application/json" - 需要提前初始化SQLite数据库的items表,否则新增待办时会触发500错误,初始化表结构可以参考以下SQL:
CREATE TABLE IF NOT EXISTS items ( id INTEGER PRIMARY KEY AUTOINCREMENT, item TEXT NOT NULL, status TEXT NOT NULL );
内容的提问来源于stack exchange,提问作者user14665351
相关产品推荐
相关产品推荐

