
API 설계
코드 구현
app.post("/login", (req, res) => {
const { user_id, pwd } = req.body;
let loginUser = null;
db.forEach((user) => {
if (user.user_id === user_id) {
loginUser = user;
}
});
if (loginUser) {
if (loginUser.pwd == pwd) {
res.status(200).json({
message: `${loginUser.name}님 반갑습니다.`,
});
} else {
res.status(400).json({
message: "비밀번호를 다시 확인해보세요.",
});
}
} else {
res.status(400).json({
message: "아이디를 다시 확인해보세요.",
});
}
});



주소가 아닌 '내용물'을 확인하기 위해 Object.keys()를 사용
데이터 타입에 따라 결과가 달라지는 점을 주의
예제 코드
const obj1 = {};
const obj2 = { message: "안 빔" };
const str = "1";
const num = 1;
const str1 = "one";
const str2 = "";
console.log(Object.keys(obj1).length === 0); // true (빈 객체)
console.log(Object.keys(obj2).length === 0); // false (데이터 있음)
console.log(Object.keys(str).length === 0); // false : 문자열은 객체이다.
console.log(Object.keys(num).length === 0); // true : 숫자는 객체가 아니다.
console.log(Object.keys(str1).length === 0); // false
console.log(Object.keys(str2).length === 0); // true
console.log(isEmpty(str1)); // str1은 "one"이므로 인덱스(0, 1, 2)라는 키가 존재함 -> 비어있지 않음(false)
console.log(isEmpty(str2)); // str2는 ""이므로 뽑아낼 키가 없음 -> 비어있음(true)으로 간주
function isEmpty(obj) {
if (Object.keys(obj).length === 0) {
return true;
} else {
return false;
}
}
전체 필드가 빈 경우, 아이디 필드가 빈 경우, 비밀번호 필드가 빈 경우에 대하여 Object.keys()를 활용하여 고도화
isEmpty() 함수 추가
// 1.1 Object.keys() 사용을 위해 isEmpty 함수 추가
function isEmpty(obj) {
// 객체 안에 이름표(Key)가 하나도 없으면 true(비어있음)를 반환
if (Object.keys(obj).length === 0) {
return true;
}
return false;
}
// 필드가 비었는지 확인
if (isEmpty(req.body)) {
return res.status(400).json({
message: "입력된 정보가 없습니다. 아이디와 비밀번호를 입력해주세요.",
});
}
if (!user_id) {
return res.status(400).json({
message: "아이디를 입력해주세요.",
});
}
if (!pwd) {
return res.status(400).json({
message: "비밀번호를 입력해주세요.",
});
}



// 1. 로그인
app.post("/login", (req, res) => {
const { user_id, pwd } = req.body;
// 필드가 비었는지 확인
if (isEmpty(req.body)) {
return res.status(400).json({
message: "입력된 정보가 없습니다. 아이디와 비밀번호를 입력해주세요.",
});
}
if (!user_id) {
return res.status(400).json({
message: "아이디를 입력해주세요.",
});
}
if (!pwd) {
return res.status(400).json({
message: "비밀번호를 입력해주세요.",
});
}
// 아이디, 비밀번호가 일치한지 확인
let loginUser = null;
db.forEach((user) => {
if (user.user_id === user_id) {
loginUser = user;
}
});
if (loginUser) {
if (loginUser.pwd == pwd) {
res.status(200).json({
message: `${loginUser.name}님 반갑습니다.`,
});
} else {
res.status(400).json({
message: "비밀번호를 다시 확인해보세요.",
});
}
} else {
res.status(400).json({
message: "아이디를 다시 확인해보세요.",
});
}
});
// 1.1 Object.keys() 사용을 위해 isEmpty 함수 추가
function isEmpty(obj) {
// 객체 안에 이름표(Key)가 하나도 없으면 true(비어있음)를 반환
if (Object.keys(obj).length === 0) {
return true;
}
return false;
}