Post 요청으로 데이터 추가하기백엔드/Node.js2024. 8. 30. 05:10
Table of Contents
728x90
반응형
{a : "a", b : "b"} 객체 데이터에 c : "c"를 추가해줄 것이다.
그 다음에 페이지를 리프레쉬 했을 때 추가한 값이 들어갈 수 있도록 해줄 것이다.
데이터를 추가할 때는 fetch 메소드를 사용하여 POST 요청을 보내준다.(Client에서)
그렇게 c : "c" 값을 추가해주는 요청을 보내고, 이 요청을 받아주는 부분이 있어야 한다.
request.method : 요청 메소드를 반환한다.
위쪽에 reqest.method === "POST" && reqest.url === "/home" 조건의 if문을 하나 더 작성해준다.
조건에 부합할 때 request.on() 메소드를 실행한다.
=> 특정 event를 listen 할 수 있게 해주는 기능을 가지는데,
여기서 인자로 'data'와 콜백 함수를 넣어줌으로써 'data event'가 발생할 때마다 해당 함수를 수행한다.
on의 인자로 들어가는 콜백 함수에서 데이터 chunk를 인자로 받아서, 만들어놓은 배열에 저장한다.
const body=[];
req.on('data', (chunk)=>{
console.log(chunk);
body.push(chunk); //body에 chunk 데이터를 넣는다.
});
const http = require("http");
const port = 3000;
const dataObject = { a: "a", b: "b" };
const server = http.createServer((req, res) => {
// writeHead는 한 번만 호출되어야 하며 end()가 호출되기 전에 호출되어야 한다.
// status와 response headers를 Client에 보낸다.
if (req.method === "POST" && req.url === "/home") {
req.on("data", (data) => {
console.log("data", data);
// {c : "c"}
const stringfiedData = data.toString();
console.log("stringfiedData", stringfiedData);
// Object.assign(target, source) => target에 source를 복사해서 넣는다. source의 기존 값은 변하지 않음.
Object.assign(dataObject, JSON.parse(stringfiedData));
});
} else {
if (req.url === "/home") {
res.writeHead(200, {
// "Content-Type": "text/plain",
// Javascript object를 보내려면?
"Content-Type": "application/json",
});
// 데이터가 로드되었음을 Server에 알림
res.end(
JSON.stringify(dataObject)
);
} else if (req.url === "/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 {
res.statusCode = 404;
res.end();
}
}
});
// port 수신
server.listen(port, () => {
console.log(`Listening on port ${port}`);
});
728x90
반응형
'백엔드 > Node.js' 카테고리의 다른 글
HTTP Routing (0) | 2024.08.30 |
---|---|
웹 서버 생성하기 (0) | 2024.08.29 |
HTTP Status Codes (0) | 2024.08.29 |
HTTP Request, Response 구조 (0) | 2024.08.29 |
Stateless Protocol (0) | 2024.08.29 |
@min' :: 개발을 하자
github : https://github.com/dnjfht
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!