FastAPI 미들웨어
미들웨어
http 요청과 응답이 처리되기 전에 실행되는 함수를 말한다. http 요청이 엔드포인트 함수로 전달되기 전이나 응답이 외부로 반환되기 전에 실행된다. 예를 들면 다음과 같은 일을 한다
- 요청 데이터 처리
- 요청/응답 데이터 형식화
- 인증/인가
- 로깅/모니터링
- 캐싱
- 오류 처리
- api 속도 제한 : 특정 시간동안 특정 사용자나 ip 주소로부터의 요청 횟수를 제한한다.
fastapi 가 제공하는 기본 미들웨어s
- CORSMiddleware cors활성화
- GzipMiddleware http응답을 gzip으로 압축
- HTTPSRedirectMiddleware http 요청을 https로 리디렉션
- TrustedHostMiddleware 특정 호스트에서만 요청을 허용s
그 외에도 다른 asgi 미들웨어나 스탈렛이 제공하는 미들웨어를 사용할 수 있다.
콘텍스트 변수
contextvars는 비동기 작업간에 데이터를 격리해 저장하거나 접근할 수 있다. 콘텍스트란 실행중인 코드의 환경을 말한다.
- 코드 실행중에 사용되는 변수와 현재의 값
- 현재 실행중인 코드의 위치, 실행 경로, 호출 스택의 상태
- 환경 구성 및 설정
- 실행중인 코드가 액세스하는 파일, 네트워크 연결, 데이터베이스 연결 등의 리소스
비동기 작업은 각각 별도의 콘텍스트를 가진다. 서버가 초기화될 때 전역변수로 생성하면 콘텍스트 변수에 설정된 값이 여러 요청이 동시에 수행되더라도 잘 유지될 수 있다.
로깅
미들웨어와 콘텍스트 개념을 모아서 로깅 모듈을 활용해 유저의 정보를 포함하는 모듈을 만들 수 있다. 현재 모놀리식 아키텍처(한 서버에서 여러 서비스가 수행됨)로 구성되어있는데 마이크로 서비스 아키텍처(여러 서버에서 여러 서비스가 운영됨)으로 이동된다면 유저의 요청이 어느 서비스에서 어느 서비스로 전달되어 처리되고 있는지 추적해야한다.