代码之家  ›  专栏  ›  技术社区  ›  Sushmita Chaurasia

在没有数据库的flask中创建api会导致405错误

  •  1
  • Sushmita Chaurasia  · 技术社区  · 1 年前
    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 (employees)
    
    @app.route('/employees/id', methods = ['GET'])
    def get_employee(employee_id):
        for employee in employees:
            if employee['id']== employees_id:
                return employee
        return {'error':'Employee not found'}
    

    我是Flask的新手。我试图通过ID获取员工,但它抛出了405错误。然而,我能够找到所有的员工,但不是根据id。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Sujata Khanal    1 年前

    您缺少路由传递id的正确格式,即int:employee_id以及参数中的employee_id

    从烧瓶进口flask,jsonify,请求

    app = Flask(__name__)
    employees = [
        {"id": 1, "Name": "Ram", "Age": 20,"Gender":"Male"},
        {"id": 2, "Name": "Sita", "Age": 25,"Gender":"Female" },
        {"id": 3, "Name": "Mahesh", "Age":45,"Gender":"Male"},
        {"id": 4, "Name": "Rita", "Age": 52,"Gender":"Female"},
    ]
       
    @app.route('/', methods=['GET'])
    def get_employees():
        return (employees)
    
    @app.route('/employees/<int:employee_id>', methods = ['GET'])
    def get_employee(employee_id):
        for employee in employees:
            if employee['id']== employee_id:
                return employee
        return {'error':'Employee not found'}
    
    @app.route('/', methods=['POST'])
    def add_employee():
        new_employee={'id':len(employees)+1, 'Name':request.json['Name'], 'Age':request.json['Age'], 'Gender':request.json['Gender']}
        employees.append(new_employee)
        return(new_employee)
    
    @app.route('/employees/<int:employee_id>', methods=['PUT'])
    def update_employee(employee_id):
        for employee in employees:
            if employee['id']== employee_id:
                employee['Name']= request.json['Name']
                employee['Age']=request.json['Age']
                employee['Gender']=request.json['Gender']
                return employee
        return {'error':'Employee not found'}
    
    @app.route('/employees/<int:employee_id>', methods=['DELETE'])
    def delete_employee(employee_id):
        for employee in employees:
            if employee['id']== employee_id:
                employees.remove(employee)
                return {'data':'Employe has been removed'}
        return {'error':'Employee not found'}
    
    if __name__== "__main__":
        app.run(debug = True).   
    
    推荐文章