본문 바로가기

카테고리 없음

[express] 자주 사용되는 middleware 정리

 

express로 서버 구축하다가, 레퍼런스들에서 자주 사용되는 middleware가 어떤게 있는지 정리하면 좋을거 같아서 정리해본다. 아래에 나올 app 이라는 놈은

 

const app = express();

 

 

여기서 나온 app임을 명시한다.

 

 


 

 

1.

 

app.use(express.static('정적파일_모아둔_폴더_이름'));

 

 

정적인 파일들(이미지, css, javascript 파일 등등)을 제공하고자 할 때 자주 사용된다.

 

 

 

ex) 우리가 정적인 파일들을 'public' 이라는 폴더에 다 저장해놓았다고 하자.

 

위 middleware를 사용하지 않았을 때, public 폴더 내의 'apple.jpg' 파일에 접근하려면

 

 

http://localhost:3000/public/apple.jpg

 

 

이 url로 접근해야한다. 근데 그러면 정적인 파일들에 접근하려면 항상 '~/public/~'  이걸 붙어야하네? 중복이네??

 

중복을 극도로 싫어하는 우리들은 아래 코드를 작성함으로써 이를 해결할 수 있다.

app.use(express.static('public'));

 

이거를 작성해주면? 우리는 'public'이라는 정적 파일을 모아둔 폴더에 접근할 때 url에 '~/public/~' 이놈을 안붙여도 된다.

아래와 같이 말이다.

 

 

http://localhost:3000/apple.jpg

 

 

 


 

 

2. 

 

app.use(express.urlencoded({ extended: false }));

 

front에서 form 형식으로 데이터를 제출할 때, 우리는 form 데이터 내에 있는 정보를 받아야한다. 

 

근데 그냥 받을 순 없다. front에서 우리쪽으로 저 form 데이터가 넘어올 때, 그냥 오는게 아니라 적절한 방식으로 인코딩되어 오기 때문.

 

 

그래서 우리는 그걸 다시 express에서 받을 수 있게 변환해줘야 한다. 그 역할을 하는게 위 코드.

 

저 extended에 대한 내용은 아래 블로그에 자세히 설명되어있더라.

 

https://duklook.tistory.com/256

 

[node.js] express.urlencoded 에 대한 이해

express.urlencoded 이 미들웨어 함수는 HTTP POST 요청의 본문(body)에 인코딩된 데이터를 해석하고, req.body 객체에 채워넣어주는 역할을 합니다. 간략하게 사용되는 예시를 보여 드리면 다음과 같습니다

duklook.tistory.com

 

 

(예전에는 body-parser를 따로 사용했어야 하는데, 지금은 그냥 위 코드 한줄만 넣어주면 끝!)