API 설계를 따른 틀을 작성을 하고 나면 이제 조금씩 살을 덧대는 작업을 진행하게 되는데요.
아직 데이터베이스를 건들지 않아서 Map객체를 이용하고 있습니다.
회원가입
app.post("/join", (req, res) => {
const data = req.body;
db.set(idx++, data); // 아직 아이디 중복 가능
console.log(data);
if (!data || !data.id || !data.password || !data.name) {
res.status(400).json({
message: "입력 값을 다시 확인해주세요"
});
return;
}
res.status(201).json({
//등록성공 상태코드 : 201
message: `${db.get(idx - 1).name}님 환영합니다`
});
});
회원가입을 할 때 기본적으로 아이디 중복확인을 하는데요. 아직 유효성검사를 진행하지 않기 때문에 들어온 데이터를 그대로 Map객체에 넣어주도록 하겠습니다.
예외처리로 저는 data가 없는지 or data의 id 값이 없는지 or data의 password가 없는지 or data의 name이 없는지를 판단해서 없다면 상태코드로 400번(잘못된 요청)을 보내고 message로 입력 값을 확인해 달라는 문구를 보내고 정상작동한다면 201번 상태코드를 작성하여 등록 메시지를 보내게 만들었습니다.
DB를 이용한 회원가입
const { email, name, password, tel } = req.body;
try {
const [result] = await conn.query(
"insert into users (email, name, password, tel) values(?,?,?,?)",
[email, name, password, tel]
);
res.status(201).json({
//등록성공 상태코드 : 201
data: data,
message: `${name}님 환영합니다`
});
} catch (err) {
console.log(err);
throw new Error(err);
}
create, delete, updata의 결과는 실제 우리가 필요한 DB 데이터를 받는게 아니라 아래와 같이 동작 했을 했을 때의 값을 받아오는데 이때 affectedRows로 영향을 받은 행 수를 알 수 있습니다.( 0 = 영향받은 행이 없음 = 동작실패 )
"data": {
"fieldCount": 0,
"affectedRows": 1,
"insertId": 3,
"info": "",
"serverStatus": 2,
"warningStatus": 0,
"changedRows": 0
},
'프로젝트 > 1.youtube-project' 카테고리의 다른 글
[실전]미니 프로젝트 - 로그인 (0) | 2023.12.14 |
---|---|
[실전]미니 프로젝트 - 회원 개별 "탈퇴" (0) | 2023.12.14 |
[실전]미니 프로젝트 - 회원 개별 "조회" (0) | 2023.12.14 |
프로젝트 시작 - youtube API project (0) | 2023.12.13 |
[실전] 미니 프로젝트 - youtube API 설계 (0) | 2023.12.13 |