White Whale Studio

[Node.js] API 만들어보기 - 1 본문

IT Engineering/MEAN Stack

[Node.js] API 만들어보기 - 1

glorymind 2018. 9. 7. 11:02
반응형

이전 포스팅에서 연결했던 Sqlite DB내용을 API로 제공하도록 구현해보겠습니다.

우선 기존 소스를 수정합니다.


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
const sqlite3 = require('sqlite3').verbose();
 
var treeList = [];
 
// open database in memory
let db = new sqlite3.Database('./db/tms.db', (err) => {
  if (err) {
    return console.error(err.message);
  }
  console.log('Connected to the in-memory SQlite database.');
});
 
db.serialize(() => {
  db.each(`SELECT LineNo, SectionNo
           FROM TB_Tree`, (err, row) => {
    if (err) {
      console.error(err.message);
    }
    console.log(row.LineNo + "\t" + row.SectionNo);
 
    var _LineNo = row.LineNo;
    var _SectionNo = row.SectionNo;
 
    treeList.push({
      LineNo:_LineNo,
      SectionNo:_SectionNo
    });
  });
});
 
// close the database connection
db.close((err) => {
  if (err) {
    return console.error(err.message);
  }
  console.log('Close the database connection.');
});
 
exports.treeList = function(){
  return treeList;
}
 
cs

db.serialize() 내부에보면 treeList 라는 컬렉션에다가 json 형식으로 데이터를 push하는 것을 볼수 있습니다.

해당 리스트를 전달하기 위해 

exports.treeList = function(){

  return treeList;
}

로 전달하고 메인이되는 api.js를 작성해봅니다.


1
2
3
4
5
6
7
8
9
10
11
12
var http = require('http');
var sqlite = require('./sqliteSample.js');
 
http.createServer(function (req, res) {
 
  var treeList = sqlite.treeList();
 
  res.writeHead(200, {'Content-Type' : 'application/json'});
  res.end(JSON.stringify(treeList));
 
}).listen(8989);
 
cs

api.js에서는 아까 작성한 sqliteSample.js를 include하고
var treeList = sqlite.treeList(); 로 읽은 DB를 가지고 옵니다.
그리고 화면에 json 타입으로 쓰기 위해서 

res.writeHead(200, {'Content-Type' : 'application/json'});

res.end(JSON.stringify(treeList));

위와 같이 코딩을 합니다.


위 소스를 실행해보면 콘솔에도 출력이 되고 웹페이지에서도 다음과같이 출력됩니다.




반응형

'IT Engineering > MEAN Stack' 카테고리의 다른 글

[Node.js] Sqlite3  (0) 2018.09.07
[Node.js] Upload Files  (0) 2018.08.31
[Node.js] Events  (0) 2018.08.30
[Node.js] NPM : Node Package Manager  (0) 2018.08.30
[Node.js] URL Module  (0) 2018.08.30
Comments