POST 요청을 처리하여 데이터를 서버의 객체에 업데이트

2024. 11. 17. 17:22정보처리,전산/NODEJS

반응형

 

// 필요한 모듈 불러오기
const http = require('http');

// 서버 설정
const port = 4000; // 사용할 포트 번호
const targetObject = { a: "a", b: "b" }; // 서버에서 관리할 데이터 객체

// HTTP 서버 생성
const server = http.createServer((req, res) => {
    if (req.method === 'POST' && req.url === '/home') {
        // POST 요청 처리
        req.on('data', (data) => {
            console.log('Received raw data:', data);
            const parsedData = JSON.parse(data.toString());
            console.log('Parsed data:', parsedData);
            Object.assign(targetObject, parsedData); // 받은 데이터를 기존 객체에 병합
        });
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ message: "Data updated successfully!" })); // 응답 반환
    } else if (req.method === 'GET' && req.url === '/home') {
        // GET 요청 처리
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify(targetObject)); // 현재 객체 반환
    } else if (req.url === '/about') {
        // /about 페이지 응답 처리
        res.setHeader('Content-Type', 'text/html');
        res.write('<html>');
        res.write('<body>');
        res.write('<h1>About page</h1>');
        res.write('</body>');
        res.write('</html>');
        res.end();
    } else {
        // 404 응답 처리
        res.writeHead(404, { 'Content-Type': 'text/plain' });
        res.end('404 Not Found');
    }
});

// 서버 시작
server.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});

1. http 모듈 불러오기

 
  • http: HTTP 서버를 생성하고 요청을 처리하는 모듈.
  • targetObject: 서버가 관리하는 객체. POST 요청으로 받은 데이터를 여기에 병합.

2. POST 요청 처리 (/home URL)

  • req.method === 'POST': 요청이 POST 방식인지 확인.
  • req.on('data', callback):
    • POST 요청의 데이터를 수신.
    • 데이터는 기본적으로 버퍼로 전달되므로, 문자열로 변환(toString) 후 사용.
    • 문자열 데이터를 JSON.parse로 파싱하여 JavaScript 객체로 변환.
  • Object.assign(targetObject, parsedData):
    • 기존 targetObject에 새로운 데이터 병합.

3. GET 요청 처리

  • 요청 경로와 방식에 따라 다른 응답 제공.
  • /home 경로로 요청이 오면, JSON 데이터를 반환.
  • /about 경로로 요청이 오면, 간단한 HTML 페이지 반환.
  • 정의되지 않은 경로로 요청이 오면 404 Not Found 응답.

4. 서버 시작

  • 지정한 포트 번호(4000)로 서버를 실행.
  • 서버가 실행되면 콘솔에 메시지를 출력.

동작 흐름

  1. 서버는 POST 요청으로 받은 데이터를 targetObject에 병합.
  2. /home에 GET 요청을 보내면 현재 데이터를 JSON으로 반환.
  3. /about 요청은 간단한 HTML 페이지를 제공.
  4. 정의되지 않은 경로로 접근하면 404 상태 반환.

 

 

 

 

 

 

 

 

 

fetch('http://localhost:4000/home', {
    method: 'POST', // HTTP 메서드로 POST를 사용
    body: JSON.stringify({ c: "c" }) // JSON 데이터를 문자열로 변환 후 요청 본문(body)에 추가
});​

 

 

 

 

반응형