미들웨어
: express에서 request와 response 사이에 위치하여 어떠한 작업을 수행하는 함수
파라미터 개수
- 2개 : req, res (일반적)
- 3개 : req, res, next
next : 하나의 라우터에 여러 미들웨어가 사용되었을 때
- 4개: err, req, res, next
err : 에러가 발생했을 때 처리를 담당하는 미들웨어
아규먼트로 넘겨준 순서가 미들웨어의 순서를 결정
하나의 엔드 포인트 = 'http 메소드 + 경로 + 미들웨어' 로 구성
all 메소드
: 동일한 경로에서 모든 http 메소드에 대한 리퀘스트를 미들웨어로 전달 → http 메소드에 관계 없이 동일한 수행을 앞서서 수행할 때 사용
app.use
http 메소드에 관계없이 모든 리퀘스트가 지정한 미들웨어를 거쳐가도록 함
해당 경로로 시작하는 모든 경로에 대응됨
첫번째 파라미터 생략가능 : 최상위 경로가 default, 모든 리퀘스트에 대해 항상 실행
☞ 하나의 리퀘스트가 여러 미들웨어를 지나가도록 되어있다면 여러 미들웨어에서 같은 req, res 객체 사용
-- 객체이므로 원하는 값 추가 가능
에러 처리 : 에러 핸들러(=파라미터 4개 미들웨어)
실행되는 경우
① throw() 키워드로 에러 발생 시킬 때
② next() 메소드에 argument 넘겨 주었을 때
express에는 기본적인 에러 핸들러가 하나 있음
에러 핸들러도 미들웨어라서 아규먼트로 전달되는 순서가 중요 → 앞쪽의 미들웨어에서 발생한 에러를 뒤쪽의 에러핸들러가 처리 → 에러의 발생위치보다 뒤쪽에 정의해야함
내장 미들웨어
: express에 미리 포함되어 있는 미들웨어; 보통 모든 경로에 대한 req, res 대상으로 실행 (→ use 메소드에서 사용)
① express.json()
: req.body에 담긴 json을 객체로 불러오기 위해 사용. Content-Type = ' application/json '
req 객체에 값을 담는 역할을 하므로 값을 사용하는 미들웨어보다 앞쪽에 위치해야함
실행결과로 함수 자체를 반환
② express.urlencoded()
: Content-Type = ' application/x-www-form-urlencoded ' 인 리퀘스트 처리위해 필요함
이 미디어 타입은 주로 html의 입력 폼 통해서 서버로 data 전송시 사용
키와 value로 구성된 리퀘스트 바디를 읽어와 리퀘스트 객체의 body 속성에 객체로 지정
아규먼트 : extended (boolean값) → true 일 경우 복잡한 속성의 body-키 값을 읽을 수 있음
③ express.static()
: 서버의 파일을 서버 외부로 전달하기 위해 사용
자주 사용되는 미들웨어
① cookie-parser
: 리퀘스트로 전달 받은 쿠키를 쉽게 파싱할 수 있는 미들웨어
쿠키의 값은 문자열(req객체의 headers속성에서 확인가능) → 이를 키와 값으로 분리
② morgan
: 서버로 들어온 리퀘스트를 로그로 남기는 미들웨어
③ cors
: 웹사이트가 다른 도메인에 있는 리소스에 접근할 수 있도록 브라우저에서 HTTP 헤더 통해 제어
④ Content-Type : multipart/form-data 인 리퀘스트
입력폼 작성하고 전송할 때 다양한 타입의 데이터 전송을 가능하게 함
route() : 중복된 경로의 라우트를 묶어서 표현가능
app.route('중복된 경로')
.http메소드1({
})
.http메소드2({
})
...
Router 객체
여러 라우터를 묶어서 하나의 모듈로 만들고, 여러 모듈을 객체에 연결하는 방식으로 사용할 때 이용
express.Router();
라우터 레벨 미들웨어
: 묶인 라우터 별로 미들웨어 다르게 적용가능
파일 보내는 방법
① 파일을 텍스트로 인코딩하여 body에 추가
② multipart 타입사용
: multipart/form-data :: 사용자의 입력 값을 하나로 묶기 위해서 사용 → 각각의 데이터 타입을 그대로 적용
서버에서 이 데이터 타입을 받기 위해 'multer' 라이브러리 필요
-- multer
각각의 파일에 접근을 가능하게 하는 라우트를 만들어줌
dest 옵션을 사용해 파일 저장 위치를 지정
파일을 1개 받을 경우 single() 메소드 사용. 이 메소드는 미들웨어 자체를 반환
app.use(express.static('제공할 파일들이 있는 디렉토리(multer사용된것)'));
'CodeIt' 카테고리의 다른 글
자바스크립트 기본 다지기 (0) | 2024.09.16 |
---|---|
5주차 (0) | 2024.08.05 |
데이터베이스 사용하기 (1) | 2024.07.17 |
3주차 (0) | 2024.07.13 |
또 봐도 새로운 git/github (1) | 2024.07.06 |