본문 바로가기
도서로 공부하는 프로그래밍/코딩 자율학습

[NodeJS] Express 프레임워크 사용하기

by 열공노년 2024. 4. 9.
반응형

Express 프레임워크 사용하기

Express는 Node.js를 위한 가장 인기 있는 웹 프레임워크 중 하나로, 웹 애플리케이션과 API를 구축하기 위한 간단하면서도 유연한 도구 세트를 제공합니다. 미니멀하면서도 강력한 기능을 갖추고 있어, 개발자들이 빠르고 효율적으로 서버 측 로직을 구현할 수 있게 돕습니다.

Express의 특징

  • 미들웨어 아키텍처: 요청-응답 사이클을 처리하는 미들웨어를 사용하여 기능 확장이 가능합니다. 미들웨어는 로깅, 요청 본문 파싱, 세션 관리 등 다양한 작업을 처리할 수 있습니다.
  • 라우팅: URL 경로와 HTTP 메서드(예: GET, POST)를 기반으로 라우트를 설정할 수 있으며, 이를 통해 RESTful API 개발이 용이합니다.
  • 템플릿 엔진 지원: Pug(Jade), EJS 등 여러 템플릿 엔진을 지원하여 서버 측에서 HTML을 동적으로 렌더링 할 수 있습니다.
  • 간결성: Node.js의 기본 HTTP 기능을 추상화하여 개발 과정을 단순화합니다.
  • 확장성: 다양한 서드 파티 미들웨어를 통해 기능을 쉽게 추가할 수 있습니다.

Express 설치하기

익스프레스는 기본 라이브러리가 아니기 때문에 설치를 합니다. 설치는 node.js 패키지 관리자인 npm(nodejs package manager)을 통해서 진행합니다. backend 폴더로 이동하여 설치를 하면 새로운 파일과 폴더가 생깁니다.

익스프레스 설치

 

패키지 관리자 npm은 node.js를 설치하면서 같이 깔립니다. 설치가 완료되면 아래와 같은 설치 성공 메시지가 출력됩니다. 

익스프레서 설치 성공

 

성공된 결과로 생긴 'node-modules'과 파일들을 확인하기 위해 'ls' 명령어나 'dir' 명령어로 확인합니다. 'package.json' 파일은 express 프레임워크를 사용하는 데 필수 정보가 기록됩니다.

설치 파일과 폴더 확인

 

'node_modules' 디렉터리에는 익스프레스를 실행하는 데 필요한 의존성 패키지가 설치됩니다. 의존성 패키지 정보는 package.json에 들어 있습니다. 'npm ls' 명령어를 입력해서 확인합니다.

'npm ls'로 의존성 패키지 정보 확인

 

첫 익스프레스 서버 만들기

간단한 익스프레스 서버를 만듭니다. 'localhost:3000'으로 접근하면 "Hello Express!"를 반환하는 서버입니다. 

간단한 express 서버 만들기 코딩

 

express 패키지를 로딩해 express에 할당합니다. express()를 실행해 express 인스턴스를 만들고 app에 할당합니다. 'app'은 express 서버 인스턴스입니다. app.get을 사용해서 url의 패스가 '/'이면서 HTTP 메서드가 get()인 경우 콜백 함수를 실행합니다. 반환할 콘텐츠의 정보를 설정합니다. 결과 콘텐츠 타입은 html이며 결과에 한글이 있으면 'utf-8' 캐릭터셋을 사용한다는 것을 설정합니다. listen() 함수는 클라이언트 요청을 기다리는 역할을 합니다. 포트 번호는 변수 지정에 의해 "3000"이 되겠습니다.

서버 실행

 

실행된 결과는 콘솔 창에는 "START SERVER : use 3000"이라는 메시지가 나타나고, 브라우저에 'localhost:3000'을 입력하면 "Hello Express!"가 출력되면 성공입니다. 또는 '127.0.0.1:3000'으로도 확인이 가능합니다.

 

Node.js 라이브러리로 만든 서버를 익스프레스로 구현

caption: 완성된 코딩

 

함수 매개변수의 언더바(`_`)

함수의 매개변수에서 언더바(`_`)를 사용하는 것은 특정 매개변수를 사용하지 않겠다는 의미를 가지고 있습니다. JavaScript에서는 함수를 정의할 때 필요한 매개변수를 모두 명시해야 하지만, 모든 매개변수를 실제로 사용하지 않을 때가 있습니다.

예를 들어, `feed` 함수에서 첫 번째 매개변수는 `_`로 표시되어 있습니다. 이는 Express.js에서 라우트 핸들러 함수는 보통 두 개의 매개변수를 받는데, 이는 각각 HTTP 요청을 나타내는 `req`와 HTTP 응답을 나타내는 `res`입니다. 만약 함수 내에서 HTTP 요청 객체를 사용할 필요가 없다면, 이를 `_`로 표시하여 이 매개변수가 무시될 것임을 다른 개발자에게 알립니다.

이런 관례는 코드의 가독성을 높이고, 함수가 어떤 매개변수를 사용하지 않는다는 것을 명시적으로 나타냅니다. 이는 특히 다른 개발자가 코드를 읽을 때 함수의 동작을 더 빨리 이해할 수 있도록 돕습니다. 

`feed` 함수의 경우, 실제로 HTTP 요청 객체를 처리하지 않고, 단순히 정적인 JSON 데이터를 응답으로 보내기 때문에 요청 객체를 무시하고 있습니다. 이러한 이유로 매개변수 이름 대신 `_`를 사용한 것입니다.

반응형