Flask单参数POST路由持续返回404错误求助
我正在尝试用Flask作为后端,结合Electron做一个小型桌面应用,但遇到了一个奇怪的问题。
简单来说,我有一个路由/appendToList/<some_value>,应该通过JavaScript的fetch请求调用。它的功能很简单:接收传入的字符串值,把它追加到一个列表里供后续使用。
这个路由的代码是这样的:
routes.py
list_o_details:list[str]=[] @app.route("/appendToList/<some_value>", methods=["POST"]) def appendToList(some_value): list_o_details.append(some_value) return {"value":f"Appended {some_value}"}
在Electron中运行时,控制台会弹出两个错误:
错误1:404,资源加载失败;错误2:Uncaught SyntaxError: Unexpected token '<', "<!doctype"... is not valid JSON
这些错误在打开桌面应用的控制台后,也会出现在终端里。
如果我单独运行Flask文件,用curl调用这个路由,同样会返回404错误:
curl请求返回404状态码
这就很奇怪了,因为我的文件里还有另外两个路由,都能正常工作。下面是完整的代码:
from flask import Flask app = Flask(__name__) list_o_details:list[str]=[] list_o_sums:list[int]=[] @app.route("/", methods=["GET","POST"]) def check(): return {"result":"Server active!"} @app.route("/add/<num1>/<num2>", methods=["POST"]) def addNumbers(num1,num2): num1=int(num1) num2=int(num2) sum = num1+num2 list_o_sums.append(sum) return {"sum":f"{num1}+{num2}={sum}"} @app.route("/appendToList/<some_value>", methods=["POST"]) def appendToList(some_value): list_o_details.append(some_value) return {"value":f"Appended {some_value}"} print(app.url_map) if __name__ == "__main__": app.run(debug=True)
我在代码里加了print(app.url_map),输出结果显示:
路由映射中包含
/appendToList/<some_value>,不过这个输出打印了两次
看起来路由是被识别到的。
经过测试我发现,如果我复制一个addNumbers()改成只有一个参数的版本:
@app.route("/adding/<num1>", methods=["POST"]) def addingNumbers(num1): num1=int(num1) num2=12 sum = num1+num2 list_o_sums.append(sum) return {"sum":f"{num1}+{num2}={sum}"}
同样会出现404错误:
curl调用这个单参数路由也返回404
我以为是参数数量的问题,于是把appendToList()改成两个参数:
@app.route('/appendToList/<some_value>/<placeholder>', methods=["POST"]) def appendToList(some_value,placeholder): list_o_details.append(some_value) return {"value":f"Appended {some_value}"}
但错误依然存在。
我实在找不到问题所在,明明路由存在,那可能是路由本身的语法错误?但我看不出来哪里错了。有没有人知道这是怎么回事,该怎么解决?
提前感谢大家的帮助!
备注:内容来源于stack exchange,提问作者user24995271

