🌿 Node

GET, POST, DELETE, PUT

ji-hyun 2022. 2. 13. 19:16
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.js] Node.js 스크립트 기본

Node.js는 "http" 개체라는 것에서 "http.Server"개체를 만들어 서버를 구축한다. 또한 요청과 응답을 다루는 "request", "response"개체에서 송수신을 수행한다. 이러한 개체의 기본적인 사용법에 대해 설명

araikuma.tistory.com

 

 

 

 

 

 

'🌿 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