🎯 מטרות הלמידה


חלק 1: ייבוא שגיאות Werkzeug

הסבר

Flask בנוי על גבי Werkzeug — ספריית HTTP שמספקת שגיאות מובנות שכל אחת מייצגת קוד HTTP ספציפי. במקום לזרוק ValueError ולתרגם אותו ל-422 בעצמנו, נזרוק ישירות UnprocessableEntity.

קוד

from flask import Flask, request, jsonify
from werkzeug.exceptions import NotFound, BadRequest, Conflict, UnprocessableEntity

app = Flask(__name__)

todos = []
next_id = 1

מיפוי שגיאות Werkzeug ל-HTTP

שגיאת Werkzeug קוד HTTP מתי משתמשים
BadRequest 400 קלט חסר או פורמט שגוי
NotFound 404 משאב לא קיים
Conflict 409 התנגשות עם מצב הנתונים
UnprocessableEntity 422 פורמט תקין אך ערך לא הגיוני

חלק 2: פונקציית עזר עם שגיאת Werkzeug

הסבר

בלאב הקודם get_todo_or_raise זרקה KeyError — כעת היא זורקת NotFound ישירות. ה-@app.errorhandler יטפל בה אוטומטית.

קוד

def get_todo_or_raise(todo_id):
    for todo in todos:
        if todo["id"] == todo_id:
            return todo
    raise NotFound(f"Todo with id {todo_id} not found")