77
88db .init_app (app )
99
10+ # 🔧 Validation Helper Function 
11+ def  validate_student_data (data , partial = False ):
12+     if  not  data :
13+         return  "Missing JSON body" 
14+ 
15+     if  not  partial :
16+         if  'name'  not  in data :
17+             return  "Missing 'name'" 
18+         if  'age'  not  in data :
19+             return  "Missing 'age'" 
20+ 
21+     if  'name'  in  data :
22+         if  not  isinstance (data ['name' ], str ) or  not  data ['name' ].strip ():
23+             return  "Invalid 'name'" 
24+ 
25+     if  'age'  in  data :
26+         if  not  isinstance (data ['age' ], int ):
27+             return  "Invalid 'age'" 
28+ 
29+     return  None   # No error 
30+ 
1031@app .route ('/' ) 
1132def  home ():
1233    return  jsonify ({"message" : "Flask Student API" }), 200 
@@ -21,14 +42,9 @@ def get_students():
2142@app .route ('/students' , methods = ['POST' ]) 
2243def  add_student ():
2344    data  =  request .get_json ()
24-     
25-     # Validation 
26-     if  not  data :
27-         return  jsonify ({"error" : "Missing JSON body" }), 400 
28-     if  'name'  not  in data  or  not  isinstance (data ['name' ], str ) or  not  data ['name' ].strip ():
29-         return  jsonify ({"error" : "Invalid or missing 'name'" }), 400 
30-     if  'age'  not  in data  or  not  isinstance (data ['age' ], int ):
31-         return  jsonify ({"error" : "Invalid or missing 'age'" }), 400 
45+     error  =  validate_student_data (data )
46+     if  error :
47+         return  jsonify ({"error" : error }), 400 
3248
3349    student  =  Student (name = data ['name' ].strip (), age = data ['age' ])
3450    db .session .add (student )
@@ -39,17 +55,13 @@ def add_student():
3955def  update_student (id ):
4056    student  =  Student .query .get_or_404 (id )
4157    data  =  request .get_json ()
58+     error  =  validate_student_data (data , partial = True )
59+     if  error :
60+         return  jsonify ({"error" : error }), 400 
4261
43-     # Validation 
44-     if  not  data :
45-         return  jsonify ({"error" : "Missing JSON body" }), 400 
4662    if  'name'  in  data :
47-         if  not  isinstance (data ['name' ], str ) or  not  data ['name' ].strip ():
48-             return  jsonify ({"error" : "Invalid 'name'" }), 400 
4963        student .name  =  data ['name' ].strip ()
5064    if  'age'  in  data :
51-         if  not  isinstance (data ['age' ], int ):
52-             return  jsonify ({"error" : "Invalid 'age'" }), 400 
5365        student .age  =  data ['age' ]
5466
5567    db .session .commit ()
0 commit comments