본문 바로가기
공부/메모

[cs공부] 미들웨어(Middleware) - 2

by 고구밍 2022. 4. 15.

https://youtu.be/SaiFQJynnb0

 

 

정의 : 양 쪽을 연결하여 데이터를 주고 받을 수 있ㄴ도록 중간에서 매개 역할을 하는 소프트웨어

클라이언트에서 요청(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()를 호출하지 않으면 -> 클라이언트