더북(TheBook)

6.3.5 static

 

static 미들웨어는 정적인 파일들을 제공합니다. 익스프레스 4 버전에서 유일하게 익스프레스에 내장되어 있던 미들웨어였습니다. 하지만 익스프레스 4.16.0 버전에서는 body-parser의 일부분이 내장되어 이제는 유일한 내장 미들웨어가 아닙니다. 익스프레스를 설치하면 따라오므로 따로 설치할 필요가 없습니다.

app.js

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

 

함수의 인자로 정적 파일들이 담겨 있는 폴더를 지정하면 됩니다. 현재 public 폴더가 지정되어 있습니다. public/stylesheets/styles.css는 http://localhost:3000/stylesheets/styles.css로 접근할 수 있습니다.

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

또한, 정적 파일들을 알아서 제공해주므로 4.3절처럼 fs.readFile로 파일을 직접 읽어서 전송할 필요가 없습니다.

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

 

이와 같이 정적 파일을 제공할 주소를 지정할 수도 있습니다. public 폴더 안에 abc.png가 있다고 가정하면 앞에 /img 경로를 붙인 http://localhost:3000/img/abc.png 주소로 접근할 수 있습니다.

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