Performance: Service layer pattern
This pattern affects how backend logic is organized, impacting server response time and frontend loading speed indirectly.
class UserService: def __init__(self, db): self.db = db def get_user(self, id): return self.db.query(f"SELECT * FROM users WHERE id = {id}") from flask import Flask, request app = Flask(__name__) user_service = UserService(db) @app.route('/user/<id>') def get_user(id): user = user_service.get_user(id) if user: return {'name': user.name, 'email': user.email} return {'error': 'User not found'}, 404
from flask import Flask, request app = Flask(__name__) @app.route('/user/<id>') def get_user(id): user = db.query(f"SELECT * FROM users WHERE id = {id}") if user: return {'name': user.name, 'email': user.email} return {'error': 'User not found'}, 404
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| No service layer (logic in routes) | N/A (backend) | N/A | N/A | [X] Bad |
| Service layer pattern | N/A (backend) | N/A | N/A | [OK] Good |
service layer in a Flask application?get_user_by_id inside a Flask route?service.get_user_by_id(id) is correct.user = get_user_by_id(id) misses the service prefix, B uses invalid arrow syntax (->) for Python, C uses wrong dot notation./user/2 if user with ID 2 exists?
from flask import Flask, jsonify
app = Flask(__name__)
class UserService:
def get_user_by_id(self, user_id):
users = {1: 'Alice', 2: 'Bob'}
return users.get(user_id, None)
service = UserService()
@app.route('/user/<int:user_id>')
def user(user_id):
user_name = service.get_user_by_id(user_id)
if user_name:
return jsonify({'user': user_name})
else:
return jsonify({'error': 'User not found'}), 404
get_user_by_id(2) returns 'Bob'.from flask import Flask, jsonify
app = Flask(__name__)
class UserService:
def get_user(self, user_id):
return None
service = UserService()
@app.route('/user/<int:user_id>')
def user(user_id):
user = service.get_user(user_id)
if user:
return jsonify({'user': user})
else:
return jsonify({'error': 'User not found'})
get_user method always returns None, so user is always None in the route.user is None, the route always returns the error JSON, meaning no user is ever found.create_user that saves a user and returns the new user ID. Which approach best follows the service layer pattern in Flask?create_user to the service class and calls it from the route, following the pattern.Pass the test and this pattern moves unknown