본문 바로가기

Dev/[Node.js]

[node.js] RestAPI서버 만들어보기(연습) - 2

반응형

 

INTRO


 

지난 포스팅에서 node.js 프로젝트를 생성하였다.

이번 포스팅은 이 Default로 생성된 프로젝트를 다듬어 볼 것이다.

 

 

 


 

node.js 로 RestAPI만들기 연습 시리즈

1편 : 

rangsub.tistory.com/104

 

1. 디렉터리 구조 변경

--> 디렉터리 구조를 바꾸는 이유는 

1. 불필요한 디렉터리 제거

2. 직관적인 디렉터리 구조

때문이다.

 

--> bin 폴더를 삭제한다.

--> view 폴터를 삭제한다.

--> src 폴더를 생성한다.

--> src 폴더 내 routes 폴더를 넣어준다.

--> src 폴더 내 app.js를 넣어준다.

--> src 폴더 내 server.js파일을 생성한다.


 

2. server.js , app.js 파일 수정 및 env 의존성 추가.

--> server.js에 아래와 같이 작성한다.

require('dotenv').config();

process.on('uncaughtException', (err) => {
  console.log('UNCAUGHT EXCEPTION!!! shutting down...');
  console.log(err.name, err.message);
  console.log(err);
  process.exit(1);
});

const app = require('./app');

// Start the server
const port = process.env.PORT;
const server = app.listen(port, () => {
  console.log(`Application is running on port ${port}`);
});

process.on('unhandledRejection', (err) => {
  console.log('UNHANDLED REJECTION!!!  shutting down ...');
  console.log(err.name, err.message);
  server.close(() => {
    process.exit(1);
  });
});

 

--> app.js파일을 아래와 같이 수정한다.

var express = require('express');
var routes = require('routes');

var app = express();
app.use('/', routes);

module.exports = app;

 

 

--> dotenv 의존성을 추가해준다.

추가하는 이유는 .env파일을 통해 환경변수(포트, DB 정보)들을 저장해놓고

gitignore 목록에 추가하여,

협업 시 로컬 환경 변수들이 commit 되지 않게 분리하기 위함이다.

 

 

--> .env 파일을 생성하고, 아래와 같이 적어준다.

 

--> 이후 다른 js파일에서 아래와 같이 dotenv를 추가해주면,

--> 이 변수를 사용할 수 있다.

require('dotenv').config();

 

 

3. 진입점 수정

--> 최초 node.js를 설치하면 진입점은 bin/www 파일이다.

--> 이 진입점은 package.json 파일에 선언되어 있다.

--> 우리는 이걸 삭제했으므로, 다른 진입점을 만들어줘야한다.

 

--> 진입점은 server.js가 될 것이다.

 

--> 우선 아래와 같이 package.json파일을 바꿔준다.

--> cross-env 는 환경 변수를 사용하겠다는 뜻이고,

--> NODE_PATH는 node 서버 진입점이 위치한 폴더를 지정한다.

--> 이후 node 명령어로 서버를 시작한다는 뜻이다.

 


 

 

 

4. route수정

--> 3번까지 모두 하고 npm start로 서버를 실행한 뒤.

--> localhost:8080으로 접근하면 아래와 같은 에러를 볼 수 있다.

-->이 에러는 app.js에 있던 html render 관련 설정들을 우리가 지웠기 때문에.

 

--> Routes/index.js파일의 res.render('index',{title:'Express'});

 

--> 부분을 실행할 수 없기 때문이다.

 

--> 이 부분을 아래와 같이 바꿔준다.

 

--> 이후 다시 실행해본다.

 

--> 오류 없이 뜨는 것을 확인할 수 있다.


 

 

 

5. nodemon 추가

--> nodemon이란, Spring boot의 devtools같은 역할을 한다.

 

--> 소스코드 수정이 발생한 경우, 서버 stop -> start 과정을 해야하는데,

 

--> 소스코드 수정 후 저장하는 시점에서 이걸 자동화 해준다.

 

--> 아래 명령어를 통해 의존성을 추가하자.

npm i nodemon

 

--> 이후 서버를 실행할 때, node명령어가 아닌 nodemon명령어로 실행해야 한다.

 

--> package.json 파일을 수정한다.

--> 이후 서버를 실행하면 터미널에 아래와 같이 출력된다.

 


 

 

마무리

 

 

 

 

 

 

 

 

 

 

 

-퍼가실 때는 출처를 꼭 같이 적어서 올려주세요!

 

반응형