더북(TheBook)

6.2.2 static

static 미들웨어는 정적인 파일들을 제공하는 라우터 역할을 합니다. 기본적으로 제공되기에 따로 설치할 필요 없이 express 객체 안에서 꺼내 장착하면 됩니다. 다음과 같이 사용합니다.

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

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

함수의 인수로 정적 파일들이 담겨 있는 폴더를 지정하면 됩니다. 현재 public 폴더가 지정되어 있습니다. 예를 들어 public/stylesheets/style.css는 http://localhost:3000/stylesheets/style.css로 접근할 수 있습니다. public 폴더를 만들고 나서 css나 js, 이미지 파일들을 public 폴더에 넣으면 브라우저에서 접근할 수 있게 됩니다.

실제 서버의 폴더 경로에는 public이 들어 있지만, 요청 주소에는 public이 들어 있지 않다는 점에 주목해주세요. 서버의 폴더 경로와 요청 경로가 다르므로 외부인이 서버의 구조를 쉽게 파악할 수 없습니다. 이는 보안에 큰 도움이 됩니다.

또한, 정적 파일들을 알아서 제공해주므로 4.3절처럼 fs.readFile로 파일을 직접 읽어서 전송할 필요가 없습니다. 만약 요청 경로에 해당하는 파일이 없으면 알아서 내부적으로 next를 호출합니다. 파일을 발견했다면 다음 미들웨어는 실행되지 않습니다. 응답으로 파일을 보내고 next를 호출하지 않으니까요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.