지난포스트 (deprecated)/NodeJS (deprecated)

nodeJS + Express + mongoose REST API 제작

.log('FE') 2018. 12. 28. 15:36
728x90
반응형

 

기본 준비 사항

 

 

  • Install Node.js
  • Install MongoDB
  • # npm install express-generator -g // express 설치
  • # express -h // 명령의 옵션 확인
  • # express rest-api -e // rest-api 폴더 생성 ejs템플릿 사용
  • # cd rest-api && npm install // 폴더이동 node 모듈 설치
  • # npm install mongoose --save // 해당 프로젝트에 의존하는 mongoose 모듈 설치
  • # mongo // MongoDB 서버 실행
  • # npm start
  • localhost:3000 접속

 

폴더구조

 

 

 

  • bin : 익스프레스 설정파일인 app.js 파일을 가져와 http 객체와 연결하는 작업을 진행 실제 서버를 구동하는 파일
  • node_modules : npm install 을 하게되면 설치되는 node 모듈모음
  • public : 정적폴더로 웹서버의 기본적인 구성
  • routes : 라우팅설정 파일 모음
  • view : 템플릿 보관 폴더
  • app.js : 익스프레스 객체를 생성하고 환경설정을 하는 js 파일

 

 

app.js 에 mongoose 모듈 및 DB 연결 설정 추가

 

var mongoose = require('mongoose');
mongoose.Promise = global.Promise;


mongoose.connect('mongodb://localhost:27017/local')
.then(() => console.log('connected succesful'))
.catch((err) => console.error(err));

 

connected succesful 이란 문자가 터미널에 찍히면 정상

 

 

/model/Products.js 에 Schema Model 설정

 

var mongoose = require('mongoose');


// 스키마 설정
var ProductSchema = new mongoose.Schema({
item_name : String,
item_desc : String,
item_price : Number,
updated_ad : {type: Date, default: Date.now},
});


module.exports = mongoose.model('Product', ProductSchema);

 

 

 

REST API 경로작성

 

 

Method Endpoints Description
GET

/items

모든상품정보
GET /items/:id 하나의 상품정보
POST /items 상품 추가
PUT /items/:id 상품 갱신
DELETE /items/:id 상품 삭제

 

 

/routes/items.js 파일 추가

 

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Item = require('../model/Product');


// GET All Items
router.get('/', function(req, res, next) {
Item.find(function (err, items) {
if(err) return next(err);
res.json(items);
});
});


// Single item
router.get('/:id', function(req, res, next) {
Item.findById(req.params.id, function(err, post) {
if(err) return next(err);
res.json(post);
});
});


// save item
router.post('/', function(req, res, next) {
Item.create(req.body, function(err, post) {
if(err) return next(err);
res.json(post);
});
});


// update
router.put('/:id', function(req, res, next) {
Item.findByIdAndUpdate(req.params.id, req.body, function(err, post) {
if(err) return next(err);
releaseEvents.json(post);
});
});


// delete
router.delete('/:id', function(req, res, next) {
Item.findByIdAndRemove(req.params.id, req.body, function(err, post) {
if(err) return next(err);
res.json(post);
});
});


module.exports = router;

 

 

app.js 코드 추가

 

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

 

 

 

 

code-reading 블로그에 방문해 주셔서 환영합니다.
댓글은 모두 환영하니 많이 달아주세요.

728x90
반응형