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)
(길어서 두번으로 나눠서 작성할 예정)