Middleware 파이썬으로 이해하기

정지효·2022년 12월 23일

C#, Blazor 를 공부하다가 Middleware 에 대한 이해를 돕기 위해 Python Flask 프레임워크에 사용되는 middleware를 참고했다.

Middleware:
웹 어플리케이션에서 컨트롤러가 요청을 처리하기 전에 실행되는 함수(의 집합)이다.

데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 API 관리 등의 기능을 한다.

아래는 Flask 프레임워크에서 제작한 WSGI 미들웨어 파일의 예시이다.

from werkzeug.wrappers import Request, Response, ResponseStream

class middleware():
    '''
    Simple WSGI middleware
    '''

    def __init__(self, app):
        self.app = app
        self.userName = 'Tony'
        self.password = 'IamIronMan'

    def __call__(self, environ, start_response):
        request = Request(environ)
        userName = request.authorization['username']
        password = request.authorization['password']
        
        # these are hardcoded for demonstration
        # verify the username and password from some database or env config variable
        if userName == self.userName and password == self.password:
            environ['user'] = { 'name': 'Tony' }
            return self.app(environ, start_response)

        res = Response(u'Authorization failed', mimetype= 'text/plain', status=401)
        return res(environ, start_response)

(출처: https://medium.com/swlh/creating-middlewares-with-python-flask-166bd03f2fd4)

이 middleware 클래스를 메인 소스인 server.py 에서 사용하도록 한다.

# calling our middleware
app.wsgi_app = middleware(app.wsgi_app)
profile
백엔드 개발자

0개의 댓글