Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Interview question

What is middleware and how do you use it? Middleware क्या है और कैसे use करते हैं?

Answer
# Flask middleware
from flask import Flask, request, g
import time

app = Flask(__name__)

# Request/response hook
@app.before_request
def before_request():
    g.start_time = time.time()
    print(f'Request: {request.method} {request.path}')

@app.after_request
def after_request(response):
    duration = time.time() - g.start_time
    print(f'Response: {response.status_code} ({duration:.2f}s)')
    return response

# Custom middleware
class TimingMiddleware:
    def __init__(self, app):
        self.app = app
    
    def __call__(self, environ, start_response):
        start = time.time()
        result = self.app(environ, start_response)
        duration = time.time() - start
        print(f'Request took {duration:.2f}s')
        return result

app.wsgi_app = TimingMiddleware(app.wsgi_app)

# Django middleware
class CustomMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
    
    def __call__(self, request):
        print(f'Processing request: {request.path}')
        response = self.get_response(request)
        print(f'Generating response with status {response.status_code}')
        return response

# In settings.py
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'myapp.middleware.CustomMiddleware',
]

# FastAPI middleware
from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware
import time

app = FastAPI()

class TimingMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request, call_next):
        start = time.time()
        response = await call_next(request)
        duration = time.time() - start
        response.headers['X-Process-Time'] = str(duration)
        return response

app.add_middleware(TimingMiddleware)

# CORS middleware
from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=['http://localhost:3000'],
    allow_credentials=True,
    allow_methods=['*'],
    allow_headers=['*'],
)
Flask:
@app.before_request
@app.after_request
Custom WSGI middleware

Django:
Middleware class
__init__ and __call__ methods
Add to MIDDLEWARE setting

FastAPI:
BaseHTTPMiddleware
app.add_middleware()
CORSMiddleware for CORS

Was this answer clear?