node JS

9.Node js mongo DB와 Express를 사용해 Restful API 만들기-1

Clasha 2020. 1. 31. 20:38

개요

Mongoose는 MongoDB 기반 ODM(Object Data Mapping) Node.JS 전용 라이브러리다. ODM은 데이터베이스와 객체지향 프로그래밍 언어 사이 호환되지 않는 데이터를 변환하는 프로그래밍 기법이고. 즉 MongoDB 에 있는 데이터를 여러분의 Application에서 JavaScript 객체로 사용 할 수 있도록 해준다.

 

프로젝트 생성 및 패키지 설치

프로젝트 생성

우선 npm init 을 통하여 package.json 을 생성한다. 엔터를 계속 눌러 설정값은 기본값으로 해주자.

$ npm init

 

패키지 설치

1.express: 웹 프레임워크

2.body-parser: 데이터 처리 미들웨어

3.mongoose: MongoDB 연동 라이브러리

$ npm install --save express mongoose body-parser

명령어를 입력하면 자동으로 패키치 설치하고, package.json파일에 패키지 리스트를 추가한다

 

서버 설정

디렉토리 구조

- models/
----- book.js
- node_modules/
- routes
----- index.js
app.js
package.json

 

웹 서버 생성

이 서버에 만들 API 목록은 다음과 같다.

ROUTE METHOD DESCRIPTION
/api/books GET 모든 book 데이터 조회
/api/books/book_id GET _id값으로 데이터 조회
/api/book/author/author GET author 값으로 데이터 조회
/api/books POST book 데이터 생성
/api/books/book_id PUT book 데이터 수정
/api/books/book_id DELETE book 데이터 제거

app.js

// app.js

// [LOAD PACKAGES]
var express     = require('express');
var app         = express();
var bodyParser  = require('body-parser');
var mongoose    = require('mongoose');

// [CONFIGURE APP TO USE bodyParser]
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// [CONFIGURE SERVER PORT]
var port = process.env.PORT || 8080;

// [CONFIGURE ROUTER]
var router = require('./routes')(app)

// [RUN SERVER]
var server = app.listen(port, function(){
 console.log("Express server has started on port " + port)

다음은 router를 만들어 보자.

router/index.js

// routes/index.js
module.exports = function(app)
{
    // GET ALL BOOKS
    app.get('/api/books', function(req,res){
        res.end();
    });
    // GET SINGLE BOOK
    app.get('/api/books/:book_id', function(req, res){
        res.end();
    });
    // GET BOOK BY AUTHOR
    app.get('/api/books/author/:author', function(req, res){
        res.end();
    });
    // CREATE BOOK
    app.post('/api/books', function(req, res){
        res.end();
    });
    // UPDATE THE BOOK
    app.put('/api/books/:book_id', function(req, res){
        res.end();
    });
    // DELETE BOOK
    app.delete('/api/books/:book_id', function(req, res){
        res.end();
    });
}

 

Mongo DB 연결

/ app.js
// ......
var mongoose    = require('mongoose');
// ......
// [ CONFIGURE mongoose ]
// CONNECT TO MONGODB SERVER
var db = mongoose.connection;
db.on('error', console.error);
db.once('open', function(){
    // CONNECTED TO MONGODB SERVER
    console.log("Connected to mongod server");
});
mongoose.connect('mongodb://localhost/mongodb_tutorial');

// ......

mongoose.connect() 메소드로 서버에 접속을 할 수 있으며, 따로 설정 할 파라미터가 있다면 다음과 같이 uri를 설정해주자.

mongoose.connect('mongodb://username:password@host:port/database?options...');

(사용DB mongodb_tutorial db)

(길어서 두번으로 나눠서 작성할 예정)