글 목차
(1) Node.js로 RESTful API 만들기 - POST편
(2) Node.js로 RESTful API 만들기 - GET편
(3) Node.js로 RESTful API 만들기 - PUT편
현재글 >> (4) Node.js로 RESTful API 만들기 - DELETE편
(5) RESTful API 활용하기 - 웹편 (작성중)
(6) RESTful API 활용하기 - 안드로이드 앱편 (작성중)
* 프로젝트 세팅 과정은 (1) Node.js로 RESTful API 만들기 - POST편 을 참고하세요!
DB Table: myGames
DB 상태는 저번 시간 그대로다. 이번 예제에서는 이 테이블에서 5번 title인 메이플스토리를 지워보는 시간을 갖도록 하겠다.
./routes/index.js
라인은 많지만 DELETE 메소드를 구현한 부분은 131줄 부터다.
그쪽만 보면된다! 특별히 어렵고 달라진 것이 없기때문에 바로 실행 해 보도록 하겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | var async = require("async"); var mysql = require("mysql"); module.exports = function(app, pool) { // >> Index page app.get("/", function(req, res) { // GET 메소드 /games로 넘어감 res.redirect("/games"); }); // >> POST app.post("/games", function(req, res) { var result = {}; var title = null; async.waterfall([ function(callback) { title = mysql.escape(req.body.title); callback(); }, function(callback) { if (title == undefined) { callback(new Error("Title is empty.")); } else { // db에 연결하여 sql 수행 pool.getConnection(function(err, conn) { // title 정보를 DB에 넣기 위한 SQL문 준비 var sql = "INSERT INTO myGames (title) VALUES (" + title + ");"; console.log("SQL: " + sql); conn.query(sql, function(err) { if (err) { // err가 떠도 conn은 release() 꼭 해주어야한다. conn.release(); callback(err); } else { conn.release(); callback(); } }); }); } }], function(err) { result = returnResult(err, res) result.status = res.statusCode; res.send(result); }); }); // >> GET app.get("/games", function(req, res) { var result = {}; // db에 연결하여 sql 수행 pool.getConnection(function(err, conn) { var sql = "SELECT * from myGames;"; conn.query(sql, function(err, rows) { var result = returnResult(err, res); if (rows) { result.message = rows; } conn.release(); result.status = res.statusCode; res.send(result); }); }); }); // >> GET/id app.get("/games/:id", function(req, res) { var result = {}; // SQL injection attack 방지위해 mysql.escape(); var id = mysql.escape(req.params.id); // db에 연결하여 sql 수행 pool.getConnection(function(err, conn) { var sql = "SELECT * from myGames WHERE id=" + id + ";"; conn.query(sql, function(err, rows) { var result = returnResult(err, res); if (rows) { result.message = rows; } conn.release(); result.status = res.statusCode; res.send(result); }); }); }); // >> PUT app.put("/games/:id", function(req, res) { var result = {}; var id = null; var title = null; async.waterfall([ function(callback) { id = mysql.escape(parseInt(req.params.id)); title = mysql.escape(req.body.title); callback(); }, function(callback) { if (id == undefined) { callback(new Error("Id is empty.")); } else if (title == undefined) { callback(new Error("Title is empty.")); } else { // db에 연결하여 sql 수행 pool.getConnection(function(err, conn) { // title 정보를 업데이트 하기 위한 SQL var sql = "UPDATE myGames SET title=" + title + " WHERE id=" + id + ";"; console.log("SQL: " + sql); conn.query(sql, function(err) { if (err) { // err가 떠도 conn은 release() 꼭 해주어야한다. conn.release(); callback(err); } else { conn.release(); callback(); } }); }); } }], function(err) { result = returnResult(err, res) result.status = res.statusCode; res.send(result); }); }); // >> DELETE app.delete("/games/:id", function(req, res) { var result = {}; var id = null; async.waterfall([ function(callback) { id = mysql.escape(parseInt(req.params.id)); callback(); }, function(callback) { if (id == undefined) { callback(new Error("Id is empty.")); } else { // db에 연결하여 sql 수행 pool.getConnection(function(err, conn) { var sql = "DELETE FROM myGames WHERE id=" + id + ";"; conn.query(sql, function(err) { if (err) { // err가 떠도 conn은 release() 꼭 해주어야한다. conn.release(); callback(err); } else { conn.release(); callback(); } }); }); } }], function(err) { result = returnResult(err, res) result.status = res.statusCode; res.send(result); }); }); } var returnResult = function(err, res) { // 결과를 눈으로 보기 쉽게하기 위해 result 객체 생성 var result = {}; if (err) { res.status(400); result.message = err.stack; } else { res.status(200); result.message = "Success"; } return result; } | cs |
실행 결과
5번 타이틀인 메이플 스토리를 지우기 위해 Postman으로 "http://localhost:3000/games/5"를 DELETE로 날려보았더니
성공했다는 200 코드가 뜬다!
데이터 베이스에서도 5번 메이플 스토리가 사라진 것을 알 수 있다.
'프로그래밍 > JS, Node.js' 카테고리의 다른 글
javascript에서 xml 파일로 저장하기 (0) | 2017.12.20 |
---|---|
Node.js 앱에서 NPM으로 Bootstrap/JQuery 다운 받아 사용하기 (0) | 2017.03.24 |
(3) Node.js로 RESTful API 만들기 - PUT편 (0) | 2017.01.24 |
(2) Node.js로 RESTful API 만들기 - GET편 (1) | 2017.01.24 |
(1) Node.js로 RESTful API 만들기 - POST편 (3) | 2017.01.24 |