Performance: Request validation
Request validation affects server response time and user experience by controlling how quickly invalid requests are rejected before processing.
from flask import request from flask import Flask from marshmallow import Schema, fields, ValidationError app = Flask(__name__) class UserSchema(Schema): name = fields.Str(required=True) age = fields.Int(required=True) @app.route('/submit', methods=['POST']) def submit(): try: data = UserSchema().load(request.get_json()) except ValidationError as err: return {'errors': err.messages}, 400 # further processing return {'status': 'success'}
from flask import request from flask import Flask app = Flask(__name__) @app.route('/submit', methods=['POST']) def submit(): data = request.get_json() if 'name' not in data or not isinstance(data['name'], str): return {'error': 'Invalid name'}, 400 if 'age' not in data or not isinstance(data['age'], int): return {'error': 'Invalid age'}, 400 # further processing return {'status': 'success'}
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual validation with multiple if checks | N/A (server-side) | N/A | N/A | [X] Bad |
| Schema-based validation with Marshmallow | N/A (server-side) | N/A | N/A | [OK] Good |
get_json() to parse JSON from the request body.json is a property, not a method. request.json_data and D are not valid Flask attributes.from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/check', methods=['POST'])
def check_age():
data = request.get_json()
if data and data.get('age', 0) >= 18:
return jsonify({'status': 'allowed'})
else:
return jsonify({'status': 'denied'})data = request.get_json()
if 'username' in data:
return 'Username received'
else:
return 'Missing username', 400Pass the test and this pattern moves unknown