RISK IT

[TIL9_23.1.17.] [Node] Express 초기 환경세팅 본문

IT/TIL

[TIL9_23.1.17.] [Node] Express 초기 환경세팅

nomoremystery 2023. 1. 17. 19:58
반응형

[Node] Express와 Typeorm을 적용한 DB operation API Server 만들기 - Assignment 1 | Westagram Backend Project - Express 초기 환경세팅

  • Node Express를 사용할 때 설정해야하는 다양한 npm 패키지(모듈)들을 설치 및 관리할 수 있다.
  • 네트워크 통신시 개발자의 수고를 덜어주는 다음의 5가지의 기본 패키지가 있다. [npm] express | nodemon | cors | dotenv | morgan

1. Express 설치

$ npm init -y
  • npm init 명령어를 통해서 작업을 의도한 애플리케이션에 package.json 파일 생성
    -y 명령어는 디폴트 값으로 제공하는 기본 설정 값을 남겨둠
  • -y 명령어를 생략하면 다양한 내용들을 입력하도록 요구하는데 (예시; 이름ㅡ 애플리케이션 버전 등), 우선 엔터를 치면서 디폴트 내용을 저장하면 위 내용과 같은 결과가 나온다.
$ npm install express

2. nodemon

개념 정의

node에서는 코드에서 수정이 일어났을 때, 코드의 수정 사항이 서버에 자동으로 반영되지 않는다. 이를 보완하기 위하여 nodemon 패키지 사용

설치 방법

$ npm install nodemon     # local dependency install
$ npm install -g nodemon  # global install

nodemon은 디렉토리(또는 디렉토리)를 계속 모니터링하고 변경 사항이 있으면 스크립트를 다시 시작
실행중인 터미널 창에 rs 를 입력함으로써 수동으로 서버 종료 없이 재시작

3. CORS 설정

cors란?

현재의 웹 브라우저는 보안상의 이유로 서로 다른 출처의 http 통신을 막도록 기본적으로 세팅되어 있다. 동일한 출처의 주체끼리만 서로 통신할 수 있도록 하는 이 SOP(Same Origin Policy) 정책은 보안성 향상을 위한 기본이라 이해할 수 있음.


하지만 현실적으로 백엔드와 프론트 서버가 서로 다른 도메인에서 운용되는 현재의 3세대 웹 서비스 환경에서, 동일한 출처에서만 리소스를 주고 받을 수는 없음. 따라서 이러한 SOP 정책을 올바르게 의도한 요청에 한해서 다소 완화시켜 서로간 통신을 가능케 해야 함.


이는 별도의 CORS 설정을 통해서 서로 다른 두개의 origin/domain 끼리의 데이터를 주고 받게 하기 위한 설정으로 이루어지며, 만일 해당 과정을 생략한다면 CORS 정책 위반을 이유로 웹 브라우저 차원에서 서버 통신을 막는다.

설치방법

$ npm install cors

4. Dotenv 환경변수 관리

환경변수란?

환경 변수(environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.

설치 방법

$ npm install dotenv

5. Morgan

Morgan 이란?

NodeJS 서버로 구성된 웹 환경에서는 기본적으로 제공되어지는 로깅(네트워크 통신기록) 기능이 없기에, 로그(log)를 관리하기 위해서 외부의 서드파티/모듈 라이브러리를 사용할 것을 권장한다. 그 중 Morgan은 npm에서 사용되는 로그 관리를 위한 여러 패키지 중 하나이며 많은 개발자들이 사용하고 있다.


Morgan을 사용하면 http(s) 통신시 프론트-백엔드간 소통시 필요로 하는 '기본 정보'들을 자동으로 포매팅하여 편리하게 주고 받을 수 있게 된다. 여기서 말하는 '기본 정보'란, http 통신시 request, response 형태로 주고 받는 status code, http version 등의 메타 정보들을 의미하며, node.js-express 선에서 제공하지 않는 이 기능을 외부의 패키지의 힘을 빌려 사용하게 된 것이다. 참고사항으로, Morgan을 사용할 때 내가 원하는 요소대로 내부 속성을 커스터마이징 하여 설정 할 수도 있다.

설치 방법

$ npm install morgan

이후 express 환경의 앱에서 morgan을 사용하도록 설정해야 한다.

const express = require("express");
const logger = require("morgan"); // morgan 모듈 추가하기

const app = express();

app.listen(3000, () => {
  console.log("Running on port 3000");
});

로그의 포맷을 아래와 같이 선택하거나 지정할 수 있다.

app.use(logger("combined")); // morgan 사용하기

다양한 로그 포맷을 통해 제공되어지는 기본적인 로그내용은 다음과 같다.

// combined
:remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"
// common
[:remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length]]
// dev
[:method :url :status :response-time ms - :res[content-length]]
// short
[:remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms]
// tiny
[:method :url :status :res[content-length] - :response-time ms]
반응형