You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:19:28