[node.js] express middleware

Jimin_Note·2022년 8월 16일
2

🐛node.js

목록 보기
1/5
post-thumbnail

middleward : 요청과 응답의 중간에 위치하여 미들웨어라고 한다!
라우터와 에러 핸들러 또한 미들웨어의 일종!

middleware는app.use와 함께 사용

app.use(미들웨어)모든 요청에서 미들웨어 실행
app.use('/abc',미들웨어)abc로 시작하는 요청에서미들웨어 실행
app.post('/abc',미들웨어)abc로 시작하는 POST 요청에서미들웨어 실행

morgan

app.use(morgan('dev'));
'dev'외에도 'conbined','common','short','tiny' 등 가능
로그가 다 다름!!

  • 개발 환경에서는 'dev' -> GET/500 7.409 ms - 50
  • 배포 환경에서는 'combined'

static

app.use('요청 경로',express.static('실제 경로'));
app.use('/',express.static(path.join(__dirname,'public')));
함수의 인수로 정적 파일들이 담겨 있는 폴더를 지정(위 예시에서는 public)
public 폴더에 css,js,이미지파일 들을 넣으면 브라우저에서 접근 가능
실제 서버의 폴더 경로에는 public이 들어있지만 요청 주소에는 들어있지 않음!!
fs.readFile로 파일을 직접 읽어 전송할 필요 없이 요청 경로에 해당하는 파일이 없으면 알아서 내부적으로 next 호출

body-parser

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}

  • false : 노드의 querystring 모듈을 사용하여 쿼리스트링 해석
  • true : qs모듈을 사용하여 쿼리스트링 해석
    (qs모듈은 querystring 모듈보다 확장)

데이터를 해석해서 req..body객체로 만들어주는 미들웨어
폼 데이터나 AJAX 요청의 데이터를 처리
(이미지,동영상,파일은 처리불가) -> multer 모듈사용

  • 버퍼나 텍스트 요청을 처리할 떼
const bodyParser = require('body-parser);

app.use(bodyParser.raw());
app.use(bodyParser.text());

cookie-parser

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)

profile
Hello. I'm jimin:)

1개의 댓글

comment-user-thumbnail
2022년 8월 16일

좋은정보 보고 갑니다 ^~^

답글 달기