[TIL] express.static()

sunriseGong·2021년 11월 7일
0
  • 어떤 역할을 하나요?
  • 설치가 필요한가요?
  • 사용예시를 보여주세요.
  • path.join 을 사용한이유는 무엇인가요?
  • 보안상의 이점이 있나요?
  • 요청 경로에 파일이 없으면 어떻게 처리하나요?

static 미들웨어는 어떤 역할을 하나요?

정적 파일들을 제공하는 라우터 입니다.

fs.readFile로 파일을 직접 읽어서
전송할 필요가 없어 편리합니다.


설치가 필요한가요?

아니요.
기본적으로 제공되므로
express 객체로 접근할 수 있습니다.

ex) express.static()


사용예시를 보여주세요.

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 폴더에 넣으면
브라우저에서 접근할 수 있게 됩니다.


path.join 을 사용한이유는 무엇인가요?

예시에서

app.use(express.static( __dirname + ‘/public’ ));

이런식으로 경로를 적지 않고

path.join 을 사용한 이유는

운영체제( 윈도우나 맥 )에 따라서 ‘경로 구분자’가 / 또는 \ 로

차이가 있을 수 있기 때문 입니다.

( __dirname : 현재 폴더 경로 )


static 미들웨어는 보안상의 이점이 있나요?

네. 외부인이 서버의 구조를 파악하기 힘듭니다.

위 사용예시에서
실제 서버의 폴더 경로에는 public이 들어 있지만,
요청 주소에는 public이 들어 있지 않다는 점을 주목해주세요.

서버의 폴더 경로와
요청 경로가 다르기 때문에
외부인이 서버의 구조를 쉽게 파악할 수 없습니다.
그래서 보안에 도움이 됩니다.


요청 경로에 파일이 없으면 어떻게 처리하나요?

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

반대로 파일을 발견하면
응답으로 파일을 보내고
next를 호출하지 않아서
다음 미들웨어는 실행되지 않습니다.

출처 : https://thebook.io/080229/ch06/02/02/

profile
심심해야 공부하게 된다.

0개의 댓글