기주

Express static 본문

TIL

Express static

기주그지마 2024. 5. 25. 15:05

 

 

Express static 미들웨어

 

express 에서 기본적으로 제공하는 미들웨어이고, express 객체안에서 바로 꺼내 쓸 수 있다

정적파일인 이미지, css, javascript등 파일을 쓸때 사용한다

 

지정된 디렉토리에서 파일을 찾아서 클라이언트에게 제공한다

 

이 미들웨어를 통해 정적파일에 restful한 방식으로 접근할 수 있다.

 

사용법 예시1)

app.use('요청경로', express.static('실제경로'));

app.use('/', express.static(path.join(__dirname, 'public')));

 

app.use('/', express.static(path.join(__dirname, 'public')));

ㄴ 현재 위치한 파일에 대한 절대경로 + '/public'  => 이 경로를 기본경로로 설정 

 

 

http://localhost:3000/profile-img/1234.png  실제로 이런 요청이 왔다면,

 

.(실행파일의 절대경로~)/public/profile-img/1234.png 이 주소의 파일에 접근할 수 있다

 

 

 

예시2)

app.use('/static', express.static('images'))

 

ㄴ /static으로 시작하는 경로로 요청이 들어오면, /public 디렉토리를 루트경로로 지정하여 파일 제공

 

http://localhost:3000/static/images/cat.png 요청으로

 

images/cat.png 파일 접근 가능하다.

 

 

 

 

예시3)

const path = require('path')
app.use('/static', express.static(path.join(__dirname, 'public')))

 

하지만 node를 시작한 경로에따라 express.static이 상대적으로 다른 위치에서 적용될 위험이 있다.

 

그래서 위와같은 __dirname을 통해 절대경로를 사용해서 쓰는 편이 더 안전하다

 

 

 



요청경로에 파일이 없으면 알아서 내부적으로 next를 호출한다. 다음 미들웨어가 실행된다

파일이 있다면 next를 호출하지않고 끝난다.(res.sendFile로 응답보내고 끝.) 다음 미들웨어는 실행되지않는다