-
Express staticTIL 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로 응답보내고 끝.) 다음 미들웨어는 실행되지않는다'TIL' 카테고리의 다른 글
[nest.js] swagger 적용하기 (0) 2024.05.29 [ERROR] ReferenceError: exports is not defined in ES module scope (0) 2024.05.28 [DB] 트랜잭션 동시에 실행해서 성능올리기 ( confilct serializable한 nonserial schedule을 허용하기 ) (0) 2024.04.08 [DB] soft delete 논리삭제 (0) 2024.04.05 N+1 문제 해결하기 (0) 2024.04.05