노드숙련강의 3-3

·2022년 12월 20일
0

study

목록 보기
15/81
post-thumbnail

회원가입 API 구현하기

POST 메서드, /users 경로로 요청 받을수 있도록 구현

  1. 회원가입 할 때 프론트엔드로부터 입력받을 데이터는 4가지
  • nickname: 사용자가 사용하려는 닉네임 값
  • email: 사용자가 사용하려는 이메일 값
  • password: 사용자가 사용하려는 패스워드 값
  • confirmPassword: 패스워드 확인 값
  1. 비밀번호와 비밀번호 확인 값이 같은지 검사 → 닉네임,이메일 중복 데이터 검사 → 중복 데이터 없는 경우 사용자 DB저장

회원가입 기능 구현

// 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({});

이 코드는 ResponseStatus Code를 201로 지정하고, {} 라는 데이터를 응답 값으로 보내는 코드예요!

Status code가 201인 이유는 REST API의 원칙에 따라 Created라는 의미로 지정했고, 응답 값으로 {} 를 보낸 이유는... 특별히 보내줄 데이터가 없었기 때문

profile
개발자 꿈나무

0개의 댓글