middleward : 요청과 응답의 중간에 위치하여 미들웨어라고 한다!
라우터와 에러 핸들러 또한 미들웨어의 일종!
middleware는app.use와 함께 사용
app.use(미들웨어) | 모든 요청에서 미들웨어 실행 |
app.use('/abc',미들웨어) | abc로 시작하는 요청에서미들웨어 실행 |
app.post('/abc',미들웨어) | abc로 시작하는 POST 요청에서미들웨어 실행 |
app.use(morgan('dev'));
'dev'외에도 'conbined','common','short','tiny' 등 가능
로그가 다 다름!!
GET/500 7.409 ms - 50
app.use('요청 경로',express.static('실제 경로'));
app.use('/',express.static(path.join(__dirname,'public')));
함수의 인수로 정적 파일들이 담겨 있는 폴더를 지정(위 예시에서는 public)
public 폴더에 css,js,이미지파일 들을 넣으면 브라우저에서 접근 가능
실제 서버의 폴더 경로에는 public이 들어있지만 요청 주소에는 들어있지 않음!!
fs.readFile
로 파일을 직접 읽어 전송할 필요 없이 요청 경로에 해당하는 파일이 없으면 알아서 내부적으로 next
호출
app.use(express.json());
: json 형식의 데이터 전달 방식
app.use(express.urlencoded({ extended: false}));
: 주소 형식으로 데이터 전송
//json형식
{ name: 'jimin', age:26 }
//req.body에 그대로 들어감
//URL - encoded
name=jimin&age=26
//req.body에 { name: 'jimin', age:26 } 로 들어감
{ extended: false}
데이터를 해석해서 req..body
객체로 만들어주는 미들웨어
폼 데이터나 AJAX 요청의 데이터를 처리
(이미지,동영상,파일은 처리불가) -> multer 모듈사용
const bodyParser = require('body-parser);
app.use(bodyParser.raw());
app.use(bodyParser.text());
app.use(cookieParser(비밀키));
요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만듬
name=jimin
쿠키를 보냈다면 req.cookies는 { name: 'jimin'}
쿠키는 클라이언트에서 위조하기 쉬우므로 비밀 키를 통해 만들어낸 서명을 쿠키 값 뒤에 붙인다
name=jimin.sign
res.cookies('name','jimin',{
expires: new Data(Date.now()+ 900000),
httpOnly: true,
secure: true,
});
res.clearCookie('name','jimin',{httpOnly: true, secure: true});
쿠키를 지우려먼 옵션이 정확하게 일치해야함(expires, maxAge 옵셥은 필요 x)
좋은정보 보고 갑니다 ^~^