정의 : 양 쪽을 연결하여 데이터를 주고 받을 수 있ㄴ도록 중간에서 매개 역할을 하는 소프트웨어
클라이언트에서 요청(req)를 보내게되면
-> 서버에 있는 미들웨어들이 동작을 하게 됨
1번째 -> 2번째 -> 최종 미들웨어에서 응답을 보내면
그 응답이 -> 클라이언트에 전달되는 구조
<서버>가 모든 미들웨어들의 호출들로 이루어짐
어플리케이션 수준
익스프레스 프레임웍
1.익스프레스 리콰이어 -> 앱이라는 변수에 담음
앱에 use, method(get, post, put, delete 등) http매서들로 미들웨어를 등록할 수 있음
미들웨어는 함수로 만들 수 있음
'/user/' 접근했을 때, 미들웨어가 동작할 수 있음
-> 주소가 없을 경우 모든 경로에서 미들웨어가 동작하게 됨
인자는 (요청, 응답, 다음 미들웨어 호출을 콜백)으로 이루어짐
next() 콜백 함수의 호출 -> 다음 미들웨어를 실행한다.
-> 미들웨어는 한 개 이상을 등록할 수 있다.
라우터 수준
단순히 Router()의 인스턴스에 바인딩 된다는 점을 제외하면
어플리케이션 수준 미들웨어와 동일하게 동작한다.
바인딩?
바인딩(Binding) 이란 프로그램의 어떤 기본 단위가 가질 수 있는 구성요소의 구체적인 값, 성격을 확정하는 것을 말한다.
https://medium.com/pocs/%EB%B0%94%EC%9D%B8%EB%94%A9-binding-4a4a2f641b27
라우터에 경로를 지정해서
이 경로에 왔을 떄, 해당 함수를 동작할 수 있도록 함
(라우트 수준)
오류처리 미들웨어 (err, req, res, next)
->오류처리 미들웨어는 항상 4개의 인수를 사용
-> 하나라도 생략되면 '일반 미들웨어'로 인식해버리므로 꼭 4개를 넣어주어야 한다.
next()도 마찬가지
사용안해도 넣어야 됨
express가 내장한 미들웨어 -> 이런게 있다.
누군가에 의해 만들어진 미들웨어
"/login"경로에 req에 youtube 프로퍼티를 출력
바디파서
-> 바디파서 미들웨어 등록
-> 우리가 해당 바디라는 프로퍼티에 접근 할 수 있게 됨
순차적으로 미들웨어가 실행이됨 -> next()가 순서대로 호출
최 끝단의 미들웨어가 next()를 호출하지 않으면 -> 클라이언트
'공부 > 메모' 카테고리의 다른 글
JPA 지연 로딩과 즉시 로딩 (0) | 2022.04.16 |
---|---|
JPA의 @Enumerated를 알아보자 - 1 (0) | 2022.04.16 |
[cs공부] 미들웨어(Middleware) - 1 (0) | 2022.04.15 |
스프링 심화과정 - 순한맛 2단계 음식조회, 중복 (0) | 2022.04.05 |
스프링 심화과정 - 순한맛 2단계 음식등록 (0) | 2022.04.04 |