devlog_owen
231110 TIL) express.js, 미들웨어(Middleware)란? 본문
Express.js란?
Express.js는 Node.js를 기반으로 한 웹 프레임워크로, 웹 애플리케이션 및 RESTful API를 개발하기 위한 도구 및 구조를 제공한다. Express.js는 미들웨어 기반의 구조를 가지고 있어서 요청과 응답을 중간에서 가로채고 처리하는 방식으로 작동한다.
특징
1. 미들웨어 지원 : 미들웨어 개념을 기반으로 하고 있어 요청, 응답을 중간에서 가로채어 처리 가능함
이를 통해 로깅, 인증, 세션관리, 라우팅, 에러처리 등 다양한 작업을 수행 가능하다
2. 라우팅: 간편하게 라우팅을 설정할 수 있는 기능을 제공함. url 경로와 http 메서드에 따라 어떤 코드를 실행할지 정의할 수 있다.
3. 모듈화: 모듈화가 잘 되어있어 앱을 쉽게 구성하고 유지보수할 수 있다. 라우터, 미들웨어, 뷰 엔진 등을 모듈로 사용가능하다.
4. 유연성과 확장성: 가벼우면서도 강력한 기능을 제공함. 미들웨어를 이용해 필요한 기능을 쉽게 추가할 수 있고 다양한 모듈을 통해 앱을 확장시킬 수도 있다.
미들웨어(Middleware)란?
소프트웨어에서 컴퓨터 시스템이나 응용 프로그램 중간에 위치해 서로 다른 시스템 또는 컴포넌트들이 상호작용할 수 있도록 하는 소프트웨어 구성요소.
웹 서버에서 요청을 받을때 모든 요청에 대해 공통적인 처리를 하고 싶은 경우, 미들웨어를 통해 웹 서버의 요청/응답에 대해 공통적으로 관리가 가능하다.
미들웨어의 역할
요청 처리 (Request Handling): 클라이언트가 보낸 요청을 받아서 처리하거나 변형한다. 요청의 헤더를 확인하거나 요청된 데이터를 가공하는 등의 작업을 포함함.
응답 처리 (Response Handling): 서버에서 클라이언트로 보내는 응답을 처리하거나 변형한다. 응답 데이터를 가공하거나 캐싱을 적용하는 등의 작업이 여기에 포함된다.
로깅 (Logging): 요청과 응답에 대한 정보를 기록하고 로그를 생성한다. 이를 통해 애플리케이션의 동작을 추적하고 디버깅할 수 있다.
인증 및 권한 부여 (Authentication and Authorization): 사용자를 인증하고 권한을 확인해서 접근을 허용하거나 거부하는 작업을 수행한다.
데이터 변환 (Data Transformation): 요청이나 응답의 데이터를 변환하거나 가공하는 작업을 수행한다. JSON 형식의 데이터를 파싱하거나 문자열을 압축하는 등이 해당된다.
에러 처리 (Error Handling): 예외나 에러를 처리하고 적절한 응답을 생성한다. 애플리케이션에서 발생하는 에러를 관리하고 사용자에게 적절한 에러 메시지를 전달하는 데 사용된다.
동작방식
각 미들웨어 함수는 'req', 'res', 'next'를 인자로 받는다. ' next' 함수를 호출하면 다음 미들웨어로 흐름이 전달된다.
1. 요청
클라이언트로부터 http 요청이 서버에 도착함
요청객체 'req'와 응답객체 'res'가 생성
미들웨어 스택에서 첫번째 미들웨어 함수가 호출됨
2. 미들웨어 함수 실행
미들웨어 함수는 'req', 'res', 'next'를 인자로 받음
필요한 작업 수행 후 ' next'를 호출해 다음 미들웨어로 전달
만약 ' next'를 호출하지 않으면 흐름이 여기서 멈춤
3. 미들웨어 체인
next를 호출하면 다음 미들웨어 함수가 실행됨
이 과정이 미들웨어 스택에 등록된 모든 미들웨어 함수를 순차적으로 실행하는 동안 반복됨.
각 미들웨어 함수는 필요한 작업을 수행하고 다음 미들웨어로 전달
4. 응답단계
모든 미들웨어 함수 실행 후 클라이언트에게 응답 전송
응답 객체 'res'에 응답 데이터가 설정되어 클라이언트에게 전송됨
'TIL' 카테고리의 다른 글
231114 TIL) 알고리즘, 개인프로젝트 진행 (0) | 2023.11.14 |
---|---|
231113 TIL) 알고리즘 코드카타 (1) | 2023.11.13 |
231109 TIL) 쿠키 (Cookies),세션 (Session),JWT (JSON Web Token) (0) | 2023.11.09 |
231108 TIL) 알고리즘 문제푸는 일상 (0) | 2023.11.08 |
231107 TIL) 백준, 프로그래머스 알고리즘문제 깃허브 자동커밋하기 (0) | 2023.11.07 |