Flask开发API运行时返回404 Not Found错误如何解决
问题根因
你遇到的404 Not Found错误由两个问题共同导致:
- 路由注册逻辑未触发:
wsgi.py作为启动入口,仅导入了src包下初始化好的app实例,从未加载routes.py模块。routes.py中写的api.add_resource(Smoke, '/')属于模块顶层代码,只有模块被导入时才会执行,也就是说你的Flask应用从始至终都没注册根路径的路由规则,访问自然返回404。 - 类视图方法参数错误:
Smoke类继承自flask_restful.Resource,属于类视图,其中定义的get()请求方法是实例方法,必须携带self参数,否则即使路由注册成功,请求触发时也会抛出参数不匹配的错误,无法正常返回响应。
修复步骤
- 在启动入口导入路由模块,确保路由注册代码在应用启动时执行。修改
wsgi.py内容如下:from src import app # 新增导入routes模块,触发路由注册逻辑 import src.routes if __name__ == '__main__': app.run() - 修复类视图方法的参数缺失问题,给
get方法补上self参数。修改routes.py内容如下:from flask_restful import Resource from src import api class Smoke(Resource): # 补充实例方法必需的self参数 def get(self): return {'message': 'Ok'}, 200 api.add_resource(Smoke, '/')
修改完成后重启Flask开发服务,访问http://127.0.0.1:5000/即可正常拿到{"message":"Ok"}的200响应,不会再出现404报错。
内容的提问来源于stack exchange,提问作者Black Orange
相关产品推荐
相关产品推荐

