Restful API and Node.JS
https://www.vskills.in/certification/tutorial/restful-api-and-node-js-2/
Restful API and Node.JS - Tutorial
Go back to Tutorial Representational State Transfer is a software architectural style that defines a set of constraints to be used for creating Web services. Web services that conform to the REST architectural style, termed RESTful Web services, provide in
www.vskills.in
res.writehead , res.write , res.send , res.end의 차이점은?
res.writeHead, res.write, res.send, res.end은 Express.js에서 HTTP 응답을 보내는 데 사용되는 메서드들입니다. 각각의 메서드는 다음과 같은 차이점이 있습니다:
res.writeHead(statusCode[, statusMessage][, headers]): HTTP 응답의 헤더를 설정합니다. statusCode는 HTTP 상태 코드를 나타내며, statusMessage는 선택적으로 상태 메시지를 지정할 수 있습니다. headers는 선택적으로 추가 헤더를 설정할 수 있는 객체입니다. 이 메서드를 사용하여 응답 헤더를 직접 설정할 수 있습니다.
res.write(chunk[, encoding][, callback]): 응답 본문의 일부를 작성합니다. chunk는 보낼 데이터를 나타내는 문자열 또는 버퍼입니다. encoding은 선택적으로 데이터의 인코딩을 지정할 수 있으며, callback은 데이터를 작성한 후 호출되는 콜백 함수입니다. 이 메서드를 여러 번 호출하여 응답 본문을 조각조각 작성할 수 있습니다.
res.send([body]): HTTP 응답을 보내고 종료합니다. body는 응답 본문에 해당하는 데이터입니다. 문자열, 버퍼, 객체, 배열 등 다양한 유형의 데이터를 인자로 받을 수 있습니다. 이 메서드는 적절한 Content-Type 헤더를 설정하고 응답 본문을 자동으로 보내기 때문에 편리하게 사용할 수 있습니다.
res.end([data][, encoding][, callback]): HTTP 응답을 종료합니다. data는 선택적으로 응답 본문에 해당하는 데이터를 나타내며, encoding은 데이터의 인코딩을 지정할 수 있습니다. callback은 응답 종료 후 호출되는 콜백 함수입니다. 이 메서드를 사용하면 명시적으로 응답을 종료하고 추가 데이터를 보낼 수 없습니다.
res.send는 res.write와 res.end를 조합한 형태로, 응답을 보내고 종료하는 역할을 수행합니다. res.send는 자동으로 Content-Type을 설정하고 응답 본문을 보내기 때문에 일반적인 경우에 유용하게 사용됩니다. res.writeHead와 res.write는 더 세밀한 제어가 필요한 경우에 사용할 수 있습니다. res.end는 응답을 종료하기 위해 명시적으로 호출되어야 하는 경우에 사용됩니다.
res.json
res.json은 Express.js에서 JSON 형식의 데이터를 응답으로 보내는 메서드입니다. 이 메서드를 사용하면 JSON 데이터를 보낼 때 Content-Type 헤더가 자동으로 설정되고, 데이터가 JSON 형식으로 직렬화됩니다.
res.json 메서드는 다음과 같은 방식으로 사용됩니다:
javascript
Copy code
res.json([body]);
body는 응답 본문에 해당하는 JSON 데이터입니다. 이 데이터는 자바스크립트 객체, 배열 또는 기타 JSON-serializable한 값일 수 있습니다. res.json은 res.send와 비슷한 역할을 수행하지만, 자동으로 Content-Type을 application/json으로 설정하여 JSON 형식으로 데이터를 보내는 것을 간편하게 처리해줍니다.
예를 들어, 다음과 같이 res.json을 사용하여 JSON 데이터를 응답으로 보낼 수 있습니다:
javascript
Copy code
router.get("/", function (req, res) {
const data = {
name: "John Doe",
age: 30,
city: "New York",
};
res.json(data);
});
위의 코드에서 / 경로에 대한 GET 요청이 들어오면, JSON 형식의 데이터인 data 객체가 응답으로 보내집니다. 이 데이터는 자동으로 JSON으로 직렬화되고, Content-Type 헤더가 application/json으로 설정됩니다. 클라이언트는 이 JSON 데이터를 받아서 처리할 수 있습니다.
post 요청으로 새로운 유저 정보 등록
// post new user
// post 요청으로 전달받은 req.body 객체를 기존 파일인 users.json에 추가.
router.post("/addUser", function (req, res) {
// 기존 파일의 내용 읽어오기
fs.readFile(filePath, "utf8", function (err, data) {
if (err) {
console.error("파일 읽기 오류:", err);
return res.status(500).send("서버 오류");
}
let users = {};
try {
// 기존 파일 내용을 JSON 형식으로 파싱
const parsedData = JSON.parse(data);
users = { ...parsedData, ...req.body };
} catch (err) {
console.error("JSON 파싱 오류:", err);
return res.status(500).send("서버 오류");
}
// 새로운 유저 추가
// 변경된 유저 정보를 파일에 쓰기
fs.writeFile(filePath, JSON.stringify(users), function (err) {
if (err) {
console.error("파일 쓰기 오류:", err);
return res.status(500).send("서버 오류");
}
// 성공적으로 추가되었음을 응답
res.status(200).send("유저 추가 성공");
});
});
});