JSON 서버 다루기
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를 통해 객체 형태의 데이터를 처리할 수 있다.
Author And Source
이 문제에 관하여(JSON 서버 다루기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@khw970421/JSON-서버-다루기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)