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)로 서버를 실행.
- 서버가 실행되면 콘솔에 메시지를 출력.
동작 흐름
- 서버는 POST 요청으로 받은 데이터를 targetObject에 병합.
- /home에 GET 요청을 보내면 현재 데이터를 JSON으로 반환.
- /about 요청은 간단한 HTML 페이지를 제공.
- 정의되지 않은 경로로 접근하면 404 상태 반환.
fetch('http://localhost:4000/home', {
method: 'POST', // HTTP 메서드로 POST를 사용
body: JSON.stringify({ c: "c" }) // JSON 데이터를 문자열로 변환 후 요청 본문(body)에 추가
});
반응형
'정보처리,전산 > NODEJS' 카테고리의 다른 글
Express.js 미들웨어 설정 Postman으로 요청한 경우의 동작 (0) | 2024.11.17 |
---|---|
nodemon 설치 | 설정 (0) | 2024.11.17 |
간단한 HTTP 서버를 만드는 기본적인 Node.js (0) | 2024.11.17 |
이벤트 루프와 setImmediate 및 setTimeout의 실행 순서 (0) | 2024.11.15 |
이벤트 루프 (Event Loop) (0) | 2024.11.15 |