PyCharm运行Flask开发REST API访问localhost返回404错误如何解决
404问题的直接解决方法
你访问的http://127.0.0.1:5000/是服务的根路径,但你的代码仅为/students/路径绑定了请求处理逻辑,没有为根路径配置任何响应规则,所以服务端找不到对应处理逻辑就返回404错误。
直接将访问地址替换为 http://127.0.0.1:5000/students/ 即可正常获取返回的学生数据。
相关问题说明
1. Flask路由匹配规则
- Flask 服务收到请求后,会将请求路径和你注册的所有路由做完全匹配,只有匹配成功才会执行对应的处理函数
- 你通过
api.add_resource(StudentsList, '/students/')仅注册了/students/路径的处理逻辑,因此访问根路径必然报错 - 如果你希望根路径也有返回,可以额外添加根路径的处理逻辑,示例代码如下:
@app.route('/') def index(): return {"提示": "请访问 /students/ 路径获取学生数据"}
2. 现有代码的隐性bug
你当前写的post请求逻辑存在问题,运行时会抛出变量未定义的错误,需要调整为如下逻辑:
def post(self): # 先初始化reqparse解析对象 parser = reqparse.RequestParser() # 定义需要接收的参数,可指定类型、是否必填等规则 parser.add_argument("name", required=True, help="name参数不能为空") parser.add_argument("age", type=int, required=True, help="age必须为整数且不能为空") parser.add_argument("spec", required=True, help="spec参数不能为空") args = parser.parse_args() # 原有后续逻辑保持不变即可 student_id = int(max(STUDENTS.keys())) + 1 student_id = '%i' % student_id STUDENTS[student_id ] = { "name" : args["name"], "age" : args["age"], "spec" : args["spec"], } return STUDENTS[student_id], 201
3. localhost运行机制说明
- localhost是指向本地设备的默认域名,对应固定IP
127.0.0.1,Flask启动时默认监听本地的5000端口,所以你访问127.0.0.1:5000就是向你当前电脑上运行的Flask服务发送请求 - 无需额外特殊配置,只要服务正常启动,访问对应匹配的路径即可得到响应,你可以用Postman、Apifox等工具测试接口,也可以直接用curl命令测试,示例:
- 发起GET请求获取学生列表:
curl http://127.0.0.1:5000/students/
- 发起GET请求获取学生列表:
内容的提问来源于stack exchange,提问作者user17432696
相关产品推荐
相关产品推荐

