const http = require('http');
const fs = require('fs').promises;
const server = http.createServer(async (req:Request, res:Response)=> {
try {
if(req.method ==='GET'){
if(req.url === '/'){
const data = await fs.readFile('./server2.html');
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8'});
return res.end(data);
} else if (req.url === '/about'){
const data = await fs.readFile('./server2.html');
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8'});
return res.end(data);
} else if (req.url === '/users'){
const data = await fs.readFile('./server2.html');
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8'}); // JSON 파일형식
return res.end(JSON.stringify(users)); // 이렇게 해야 프론트에 JSON 형태로 넘어감
}
// GET 메서드는 맞으나 /도 /about /users 도 아니면
try {
const data = await fs.readFile(`.${req.url}`);
return res.end(data);
} catch (err){
// 주소에 해당하는 라우트를 못 찾았다는 404 Not Found error 발생
}
} else if (req.method === 'POST'){
if (req.url === '/user'){ // 사용자 등록
let body ='';
// 요청의 body 를 stream 형식으로 받음
req.on('data', (data)=>{
body += data;
});
// 요청의 body 를 다 받은 후 실행됨
return req.on('end', () => {
console.log('POST 본문(Body):', body);
const {name} = JSON.parse(body); // 데이터를 받아서 수정하는 과정....?
const id = Date.now();
users[id] = name;
res.writeHead(201, {'Content-Type': 'text/plain; charset=utf-8'}); // 201: 생성됨이 성공
res.end('ok');
});
}
} else if (req.method === 'PUT'){
if(req.url.startsWith('/user/')){
const key = req.url.split('/')[2];
let body = '';
req.on('data', (data)=>{
body += data;
});
return req.end('end', ()=>{
console.log('PUT 본문(Body):', body);
users[key] = JSON.parse(body).name;
res.writeHead(200, 'Conetent-Type': 'text/plain; charset=utf-8' });
return res.end('ok');
});
}
} else if (req.method === 'DELETE'){
if(req.url.startsWith('/user/')){
const key = req.url.split('/')[2]; // 데이터를 받아서
delete users[key]; // 삭제
res.writeHead(200, {});
return res.end('ok');
}
res.writeHead(404); // 요청에 대한 정보를 찾지 못했다는 뜻
return res.end('NOT FOUND');
} catch (err) {
console.error(err);
res.writeHead(500, {'Content-Type': 'text/plain; charset=utf-8'});
res.end(err.message);
}
})
.listen(8080); // 포트 8080에 프로세스로 올려줌
https://araikuma.tistory.com/453
'🌿 Node' 카테고리의 다른 글
express 공부 (0) | 2022.02.20 |
---|---|
espress 기초 다지기 - 미들웨어편 (0) | 2022.02.20 |
express 파일 구조와 몽고 디비 (0) | 2022.02.16 |
노드 이해하기2 (1) | 2022.02.13 |
노드 이해하기 (0) | 2022.02.13 |