[node] 기본구성
페이지 정보
작성자 sbLAB 댓글 0건 조회 2,791회 작성일 22-02-22 23:11본문
nodejs 프로그래밍(RestApi) 기본구성
1) index.js - 메인도입부
2) routes -> myRouter.js url 라우팅 설정
3) controllers -> myCtrl.js 등 컨트롤러들
4) model - 데이타모델 상세
index.js ---> 호출url에 따른 routes 라우팅 분기(컨트롤러 작업선택) ---> controllers 컨트롤러들(DB연결 결과리턴)
//controllers - myCtrl
const connection = require('../dbConfig');
const myCtrl = {
//getListAll - 전체목록
getListAll:async(req, res)=>{
const sql = `SELECT * FROM friends`;
connection.query(sql, (error, rows)=> {
if(error)console.log("failed");
res.send(rows);
});
},
//getListOne - id 1행
getListOne:async(req, res)=>{
const id = req.params.id;
const sql = `SELECT * FROM friends WHERE id = ${id}`;
connection.query(sql, (error, rows)=> {
if(error)console.log("failed");
res.send(rows);
});
},
//getListOneSimple - id 1행 다른방법
getListOneSimple:async(req, res)=>{
const sql = `SELECT * FROM friends WHERE id = ?`;
connection.query(sql,[req.params.id], (error, rows)=> {
if(error)console.log("failed");
res.send(rows);
});
},
//insertList - 행추가(필드고정)
insertList:async(req, res)=>{
const {name, age} = req.body;
const sql = `INSERT INTO friends(name,age) VALUES('${name}',${age})`;
connection.query(
sql,(error, rows)=>{
if(error)console.log("failed");
res.send(rows);
}
)
},
//insertListSimple - 행추가 다른방법(필드유연)
insertListSimple:async(req, res)=>{
const sql = `INSERT INTO friends SET ?`;
connection.query(
sql,req.body,(error, rows)=>{
if(error)console.log("failed");
res.send(rows);
}
)
},
//updateJsonAll - id 1행 업데이트 - JSON으로 id값 까지 받을때 {"id": 4,"name": "amy","age": 20}
updateJsonAll:async(req, res)=>{
const {id} = req.body;
const sql = `UPDATE friends SET ? WHERE id=${id}`;
connection.query(
sql,req.body,(error, rows)=>{
if(error)console.log("failed");
res.send(rows);
}
)
},
//updateById - id 1행 - http://localhost:4000/api/updatebyid/4 JSON {"age": 200 }
updateById:async(req, res)=>{
const id = req.params.id;
const sql = `UPDATE friends SET ? WHERE id=${id}`;
connection.query(
sql,req.body,(error, rows)=>{
if(error)console.log("failed");
res.send(rows);
}
)
},
//deleteOne - id 1행 삭제
deleteOne:async(req, res)=>{
const sql = `DELETE FROM friends WHERE id=?`;
connection.query(
sql,[req.params.id],(error, rows)=>{
if(error)console.log("failed");
res.send(rows);
}
)
}
}
//exports
module.exports = myCtrl;
//routes - Router
const myCtrl = require('../controllers/myCtrl');
const router = require('express').Router();
// api/listall
router.route('/listall')
.get(myCtrl.getListAll);
// api/listone
router.route('/listone/:id')
.get(myCtrl.getListOne);
// api/listonesimple
router.route('/listonesimple/:id')
.get(myCtrl.getListOneSimple);
// api/add
router.route('/add')
.post(myCtrl.insertList);
// api/addsimple
router.route('/addsimple')
.post(myCtrl.insertListSimple);
// api/updatejsonall
router.route('/updatejsonall')
.put(myCtrl.updateJsonAll) ;
// api/updatebyid
router.route('/updatebyid/:id')
.put(myCtrl.updateById) ;
// api/deleteone
router.route('/deleteone/:id')
.delete(myCtrl.deleteOne);
//exports
module.exports=router;
//index.js
const express = require('express');
const fs = require('fs');
const cors = require('cors');
const path = require('path');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(express.json());
app.use(cors());
const port = 4000;
app.listen(port, ()=> {
console.log("Server Listen.....", port)
});
//class Model
const friendModel = require('./model/FriendModel');
let a = new friendModel();
a.setName("sname");
a.setAge(100);
console.log(a.getName());
//class Model2
const friendModel2 = require('./model/FriendModel2');
let a2 = new friendModel2();
a2.name="2name";
a2.age=200;
console.log(a2.name + "--" + a2.age);
//class Model2 constructor
let a3 = new friendModel2("3name",300);
console.log(a3.name + "--" + a3.age);
//Route
app.use('/api', require('./routes/myRouter'));
//데이타모델(FriendModel2)
module.exports = class FriendModel2{
constructor(name,age) {
this._name = name;
this._age = age;
}
get name(){ return this._name; }
set name(newName){ if(newName){this._name=newName;} }
get age(){ return this._age; }
set age(newAge){ if(newAge){this._age=newAge;} }
};
댓글목록
등록된 댓글이 없습니다.