POST 메서드, /users 경로로 요청 받을수 있도록 구현
nickname
: 사용자가 사용하려는 닉네임 값email
: 사용자가 사용하려는 이메일 값password
: 사용자가 사용하려는 패스워드 값confirmPassword
: 패스워드 확인 값// app.js
const User = require("./models/user");
// 회원가입 API
router.post("/users", async (req, res) => {
const { email, nickname, password, confirmPassword } = req.body;
if (password !== confirmPassword) {
res.status(400).send({
errorMessage: "패스워드가 패스워드 확인란과 다릅니다.",
});
return;
}
// email or nickname이 동일한게 이미 있는지 확인하기 위해 가져온다.
const existsUsers = await User.findOne({
$or: [{ email }, { nickname }],
});
if (existsUsers) {
// NOTE: 보안을 위해 인증 메세지는 자세히 설명하지 않는것을 원칙으로 한다.
// https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#authentication-responses
res.status(400).send({
errorMessage: "이메일 또는 닉네임이 이미 사용중입니다.",
});
return;
}
const user = new User({ email, nickname, password });
await user.save();
res.status(201).send({});
});
res.status(201).send({});
이 코드는 Response의 Status Code를 201로 지정하고, {}
라는 데이터를 응답 값으로 보내는 코드예요!
Status code가 201인 이유는 REST API의 원칙에 따라 Created라는 의미로 지정했고, 응답 값으로 {}
를 보낸 이유는... 특별히 보내줄 데이터가 없었기 때문