express 모듈을 사용해 서버 만들기

YOONIVERSE·2023년 10월 8일
0

express 란?

: http 와 fs 모듈을 사용해서 서버를 일일이 구현할 수도 있지만 서버의 규모가 커진다면 공통적으로 반복되는 코드가 많아지게 된다.
express 프레임워크는 이를 미리 해결해 준다.
웹프레임워크인 express는 Request와 response를 완전하게 통제할 수 있고 가볍고, 빠르고, 무료라는 장점까지 더해져 인기가 많은 프레임워크이다.

express 설치와 사용

npm install express

설치를 완료하면 작업 디렉터리에 node_modules/ 라는 폴더가 생성된 것을 확인 할 수 있다. express에 필요한 여러 모듈이 노드 서버로부터 다운받아진 것이고 이 파일은 용량이 매우크므로 깃을 사용하고 있다면 .gitignore 파일에 node_modules/ 디렉터리를 추가해 커밋하지 않게 해주는 것이 좋다.

express 공부하기

require() 를 통해 모듈을 불러오는 것까지는 동일하다.
http 모듈의 res 객체의 메서드 write() 대신, express의 res 객체의 send() 메서드를 통해 웹에 문자열 데이터 ('Hello World!')를 전달했다.
send() 함수 하나로 응답을 보내고, 종료하는 기능까지 가능하다.
http 모듈을 사용했던 것보다 훨씬 짧은 코드로 서버를 생성할 수 있고, 기존 http 모듈을 상속받았기 때문에 http 모듈의 기능도 모두 사용할 수 있으나 되도록 express 전용 객체를 사용하는 것이 좋다.

src/express/index.html

src/express/express_study2.js

src/express/express_study2.js
line 7: html 파일을 보낼 때 fs 모듈에서의 .readFile() 대신 sendFile()을 사용할 수 있다. http 모듈을 사용해서 응답을 보내줄 때, writeHeader를 통해 Content-type과 Charset 정보까지 보내줘야 했지만 express의 res 객체의 sendFile 메서드를 사용하면 자동으로 자질구레한 정보를 클라이언트에 보내준다.
line 10: 또 요청 주소를 여러개 더 추가할 때 http 모듈에서는 if else 를 사용해서 요청 주소를 분리해줘야 했지만 express를 사용하면 app.get등의 메서드로 깔끔하게 주소를 분리할 수 있는 등의 장점이 있다.

line 1: express 를 require() 를 통해 불러오고
line 3: app 변수에 할당했다.
line 4: 그런다음 app.set('port', 포트번호) 을 통해 서버가 실행될 포트를 지정한다.
line 10: process.env.PORTprocess.env 객체에 기본 포트번호가 있다면 해당 포트를 사용한다는 뜻이고, 그렇지 않으면 8080포트를 사용하라고 지정해준다. 이처럼 app.set(키, 값) 은 키, 값 파라미터를 이용하여 키에 값을 저장하도록 설정할 수 있는 함수이다.
line 6: 그리고 그 데이터를 app.get(키) 함수를 통해 가져온다. app.get(주소, 라우터) 은 주소에 대한 GET 요청이 올 때 어떤 응답을 할지 적어준다.
line 10: 여기서 index.html 파일을 불러오라고 해주었다. Index.html 파일은 원하는 것으로 생성하면 된다. app.listen() 을 통해 포트를 연결하고 서버를 실행한다.

http 요청 메서드 - GET, POST, PUT, PATCH, DELETE

: http 요청 메서드는 클라이언트(사용자)가 웹 서버에게 자신의 목적을 알리는 수단을 의미한다. http 메서드 클라이언트에서 이런저런 방식으로 요청이 들어와도 하나의 규격화된 방식으로 서버와 소통하며 응답을 보내줄 수 있기 때문에 필요하다.
사용자가 웹 브라우저의 주소창에 주소를 치는 것도 하나의 요청인데, 이는 'GET' 방식에 해당한다. 'GET' 이라는 글자 그대로 무언가를 '겟'하고 싶다는 것을 알리는 의미가 된다. 이와 마찬가지로 'POST'는 어떤 내용을 서버로 전송하고 싶다는 뜻이 된다. 이를 express에서는 get 과 post 함수로 표현한다.

http 요청 메서드 종류와 내용

  • GET: 리소스를 얻을 때 사용한다.
  • HEAD: 문서의 정보를 얻을 때 사용한다.
  • POST: 리소스를 전송할 때 사용한다.
  • PUT: 내용 전체를 갱신할 때 사용한다.
  • PATCH: 내용을 부분적으로 갱신할 때 사용한다.
  • DELETE: 파일을 삭제할 때 사용한다.
profile
스텝이 꼬이면 그것이 바로 탱고 💃

0개의 댓글