1. Status Code
- 우리가 회원가입을 하고 나면 보통은 브라우저가 아이디와 비밀번호를 저장할건지를 묻는 창이 뜸
- 하지만 회원가입이 정상적으로 완료되었는가를 브라우저가 확인했는지 여부는 여전히 우리가 알 수 없음
- 우리의 회원가입 화면에서는 중복되는 email이나 username이 있으면 여전히 에러메세지가 출력되기 때문
- https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
POST /join 200 15.568 ms - 912
- status code가 200이라 되어있고, 200은 OK라는 의미임
- 브라우저에서 username과 password를 가지고 요청을 보낸 다음, 응답으로 200을 받으면 브라우저는 계정 생성이 성공했다고 판단
- 2로 시작하는 모든 status code는 Success를 의미함
- 일반적으로 브라우저는 res.render()를 하게되면 status code를 200으로 받기 때문에, render는 잘 됐지만 에러가 있었다고 알려야 함
// userController.js
if (password1 !== password2) {
return res.status(400).render("join", {
pageTitle: "Join",
errorMessage: "Password confirmation does not match.",
});
}
const exists = await User.exists({ $or: [{ username }, { email }] });
if (exists) {
return res.status(400).render("join", {
pageTitle: "Join",
errorMessage: "This username/email is already taken.",
});
}
- videoController에도 status code를 추가하면 되며 기존에 404를 통해 에러 메세지를 출력했던 곳들도 변경
- status code를 누가 신경쓰겠냐고 생각할 수 있지만 굉장히 중요한 문제임
- 예로 브라우저는 유저가 방문한 웹사이트의 기록을 저장하는데, 어떤 웹사이트를 갔을때 200으로 응답을 하면 정상적으로 방문했다고 기록함
- 하지만 400으로 응답을 한다면 해당 URL 기록을 남기지 않음
- 그런 의미로 알맞는 status code를 보내는게 유저에게도 좋음
export const watch = async (req, res) => {
const { id } = req.params;
const video = await Video.findById(id);
if (!video) {
return res.render("404", { pageTitle: "Video not found!" });
}
return res.render("watch", { pageTitle: video.title, video });
};
- 브라우저는 우리가 에러를 출력한다는 걸 알 수 없음
- https://github.com/Daniel-Jeon/wetube-loaded/commit/757ebaa0af1cbcd271dc90d79fe6916510a05881
'개발 > Node.js' 카테고리의 다른 글
Cookie Session / Express-Session / Locals (0) | 2024.11.08 |
---|---|
Login / Bcrypt Compare (0) | 2024.11.08 |
User Authentication / Hash (0) | 2024.11.07 |
User Model (0) | 2024.11.07 |
Delete and Search Video (0) | 2024.11.05 |