가벼운 파이썬 웹 프레임워크에서 미들웨어 지원 구축
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
파이썬 웹 프레임워크 개발자(중급), 미들웨어 구조 이해 필요, 프레임워크 확장성 설계에 관심 있는 개발자
핵심 요약
- 미들웨어는 요청/응답 사이클을 감싸는 가벼운 함수로,
request
객체와next_handler
함수를 인자로 받는callable
구조 - 로그, 인증, 요청 검증 등 핵심 기능 분리를 통해 핸들러 로직을 단순화하고 모듈화 가능
- 순차적 미들웨어 체인을 통해 처리 파이프라인 구성 (예:
logger → require_auth → handler
순서 적용)
섹션별 세부 요약
1. 미들웨어 정의 및 역할
- 요청 전/후 처리 기능 제공 (로그, 인증, CORS 등)
- 핵심 로직과 핸들러를 직접 수정하지 않고 기능 확장 가능
- 단순성과 조합 가능성 강조 (예:
def middleware(request, next_handler): ...
구조)
2. 미들웨어 구현 예시
logger
미들웨어: 요청 메소드/경로 로깅
def logger(request, next_handler):
print(f"[LOG] {request['method']} {request['path']}")
return next_handler(request)
require_auth
미들웨어: 사용자 인증 검증def require_auth(request, next_handler):
if not request.get("user"):
return "401 Unauthorized"
return next_handler(request)
3. 미들웨어 관리자 구조
App
클래스에서use()
메서드로 미들웨어 등록handle_request()
에서 미들웨어 체인 순차 실행
class App:
def __init__(self):
self.middleware = []
def use(self, mw_func):
self.middleware.append(mw_func)
4. 처리 순서 및 최적화 지침
- 등록 순서에 따라 처리 순서 결정 (예:
app.use(logger)
→app.use(require_auth)
순서 적용) - 가벼운 프레임워크 유지를 위해:
- 순수 함수 사용
- 앱 내부 로직과의 강한 결합 피하기
- 필요한 작업만 처리하고 빠르게 제어권 반환
5. 실무 적용 패턴
- 요청/응답 전후 처리 분리
- 핸들러 로직을 핵심 비즈니스 로직에 집중
- 예:
/dashboard
경로에dashboard
핸들러 직접 연결
결론
- 미들웨어는 모듈화된 처리 파이프라인을 구축해 핸들러 로직을 단순화함
logger
와require_auth
미들웨어를 조합해 보안 및 로깅 기능 확장 가능- 가벼운 프레임워크에서 순수 함수 기반 미들웨어 사용으로 확장성과 유지보수성 향상
App
클래스 기반 미들웨어 체인 관리 구조를 기반으로 실무에 적용 가능