프로그래밍/JS, Node.js

(2) Node.js로 RESTful API 만들기 - GET편

Lou Park 2017. 1. 24. 11:23

글 목차

(1) Node.js로 RESTful API 만들기 - POST편

현재글 >> (2) Node.js로 RESTful API 만들기 - GET편

(3) Node.js로 RESTful API 만들기 - PUT편

(4) Node.js로 RESTful API 만들기 - DELETE편

(5RESTful API 활용하기 - 웹편 (작성중)

(6) RESTful API 활용하기 - 안드로이드 앱편 (작성중)


* 프로젝트 세팅 과정은 (1) Node.js로 RESTful API 만들기 - POST편 을 참고하세요!


이제는 GET 메소드를 작성 해 보겠다.

작성에 앞서서, 나는 myGames 테이블에 데이터를 몇 개 채워 넣었다.




./routes/index.js

이전에 썼던 returnResult() 함수는 이번에 result 객체를 반환하는 방향으로 바꾸었는데,

GET에서 결과값을 result 객체에 쉽게 더해주기 위함이다.

이전 POST 강의부터 찬찬히 따라오시는 분들은 주의하길 바란다!


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
var mysql = require("mysql");
 
module.exports = function(app, pool) {
    // >> POST
    app.post("/games"function(req, res) {
        var result = {};
        // 요청된 데이터 중 title이라는 놈을 뽑아 title이라고 명명.
        var title = req.body.title;
 
        // title에 아무 값이 없다면 에러 발생시킴
        if (title == undefined) {
            result = returnResult(new Error("Title is empty."), res);
        } else {
            // db에 연결하여 sql 수행
            pool.getConnection(function(err, conn) {
                // title 정보를 DB에 넣기 위한 SQL문 준비
                var sql = "INSERT INTO myGames (title) VALUES ('" + title + "');";
                conn.query(sql, function(err) {
                    // err가 떠도 conn은 release() 꼭 해주어야한다.
                    result = returnResult(err, res);
                    conn.release();
                });
            });
        }
        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); }); }); });

}
 
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


이대로 실행을 해 보면 아래 두 URL은 서로 상이한 결과를 불러올 것이다.

http://localhost:3000/games

http://localhost:3000/games/3


결과는 아래와 같다.


- http://localhost:3000/games



- http://localhost:3000/games/3


다음 강의에서는 같은 방법으로 PUT을 구현 해 보도록 하겠다.