Flask无数据库API中按ID查询员工时出现405错误的求助
Flask无数据库API中按ID查询员工时出现405错误的求助
你好呀~看了你的代码和问题描述,能理解刚接触Flask遇到这个问题的困惑😉。你现在能正常获取所有员工列表,但按ID查询时碰到405错误,咱们一步步来揪出问题并解决它。
先看看你代码里的几个问题:
- 路由定义不匹配:你写的单个员工查询路由是
@app.route('/employees/id', methods = ['GET']),这里没有定义参数占位符,Flask根本不知道要从URL里取哪个ID值,而且视图函数里还声明了employee_id参数,路由和函数参数不匹配,导致请求无法被正确匹配,进而返回405错误(实际是路由未匹配导致的方法不允许提示)。 - 变量名拼写错误:函数里的判断条件
employee['id']== employees_id中,employees_id多了一个s,应该是employee_id,就算路由对了,这里也会因为变量未定义报错。 - 返回格式不够规范:直接返回字典虽然Flask会处理,但用
jsonify可以确保响应头是正确的JSON格式,更符合API的规范。
修正后的完整代码
from flask import Flask, jsonify # 记得导入jsonify app = Flask(__name__) employees = [ {"id": 1, "Name": "Ram", "Age": 20,"Gender":"Male"}, {"id": 2, "Name": "Sita", "Age": 25,"Gender":"Female" } ] @app.route('/', methods=['GET']) def get_employees(): return jsonify(employees) # 改用jsonify返回规范的JSON响应 @app.route('/employees/<int:employee_id>', methods=['GET']) def get_employee(employee_id): for employee in employees: if employee['id'] == employee_id: # 修正变量名拼写错误 return jsonify(employee) # 返回错误信息的同时带上404状态码,更符合RESTful规范 return jsonify({'error':'Employee not found'}), 404
测试小提示
启动Flask应用后:
- 访问
http://localhost:5000/就能拿到所有员工列表; - 访问
http://localhost:5000/employees/1就能获取ID为1的员工信息;如果输入不存在的ID(比如3),会返回错误提示和404状态码,语义更清晰。
备注:内容来源于stack exchange,提问作者Sushmita Chaurasia
相关产品推荐
相关产品推荐

