JSON 서버 다루기

16102 단어 node.jsnode.js

JSON 다루기 GET / POST 코드

const http  = require('http');

const courses = [
  {name : 'HTML'},
  {name : 'CSS'},
  {name : 'JS'},
  {name : 'NODE'}
]

const server = http.createServer((req,res)=>{

  const url = req.url;
  const method = req.method;

  if(url == '/courses'){
    
    if(method == 'GET'){
      res.writeHead(200,{'Content-Type' : 'application/json'})
      res.end(JSON.stringify(courses));
    }
    
    else if(method ==='POST'){
      const body = [];
      req.on('data',chunk=>{
        body.push(chunk);
      })
      req.on('end',()=>{
        const bodyStr = Buffer.concat(body).toString();
        const course = JSON.parse(bodyStr);
        courses.push(course);
        res.writeHead(201);
        res.end();
      })
    }
  }

})

server.listen(8080);

Get

if(method == 'GET'){
      res.writeHead(200,{'Content-Type' : 'application/json'})
      res.end(JSON.stringify(courses));
    }

리턴하면서 Content-Type은 application/json 형태로 받아내야한다.

POST

else if(method ==='POST'){
      const body = [];
      req.on('data',chunk=>{
        body.push(chunk);
      })
      req.on('end',()=>{
        const bodyStr = Buffer.concat(body).toString();
        const course = JSON.parse(bodyStr);
        courses.push(course);
        res.writeHead(201);
        res.end();
      })
    }

body라는 곳에 요청한 body에서 가져온 data를 chunk로 push 해준 후 그것들을 end에서 합쳐서 문자열로 만든 후 이를 JSON 형태로 하기 위해 JSON. parse를 이용한 결과를 push한다.

chunk의 형태는 buffer 형태이다.


  <Buffer 7b 22 6e 61 6d 65 22 3a 22 64 72 65 61 6d 2d 63 6f 64 7e 7e 7e 7e 7e 21 21 7e 7e 7e 22 7d>

Buffer 객체

Buffer객체는 고정 길이의 바이트 시퀀스를 나타내는 데 사용됩니다. 많은 Node.js API가 Buffers를 지원 합니다.

const buf1 = Buffer.alloc(10);

다른 POST 코드

else if(method ==='POST'){
      let data = ''
      req.on('data',chunk=>{
        data +=chunk;
      })

      req.on('end',()=>{
        const course = JSON.parse(data);
        courses.push(course);
        res.writeHead(201);
        res.end();
      })
    }

이렇게 문자열 형태로도 가능하다.
결국 위쪽 내용의 배열에서의 concat을 통해 처리가능하다.

정리

req.on을 통해 data를 받아온 형태는 buffer 형태이다.
이를 잘 다루는 것은 문자열 형태로 받아 처리하거나
배열에다가 받아서 처리하거나 둘다 가능은 하고
마지막에 req.on의 end를 통한 JSON.parse를 통해 객체 형태의 데이터를 처리할 수 있다.

좋은 웹페이지 즐겨찾기