router.post('/login', (req, res) => {
const { userId, password } = req.body; // 요청에서 ID와 비밀번호 추출
let loginUser = db.find(user => user.userId === userId); // DB에서 사용자 검색
if (loginUser) {
if (loginUser.password === password) {
res.status(200).json({ message: `${loginUser.name}님 환영합니다!` });
} else {
res.status(400).json({ message: '입력 값을 다시 확인해주세요.' });
}
} else {
res.status(404).json({ message: '회원 정보가 없습니다.' });
}
});
코드를 전체적으로 올릴 수 없어 대략적으로 작성한 코드는 이렇다.
Object.keys() 메소드는 객체의 모든 키를 배열로 반환한다. 이를 사용하여 객체가 비어 있는지 확인할 수 있다.
const obj1 = {};
const obj2 = { message: '들어있음' };
console.log(Object.keys(obj1)); // 출력: []
console.log(Object.keys(obj2)); // 출력: ['message']
console.log(Object.keys(obj2).length === 0); // 출력: false
이 메소드는 로그인 과정에서 객체가 비어 있는지 아닌지를 확인하는 데 유용하게 사용된다.
function isExisted(obj) {
return Object.keys(obj).length > 0;
}
이 함수는 객체에 키가 하나라도 존재하면 true를 반환하고, 그렇지 않으면 false를 반환한다. 로그인 로직에서는 이 함수를 사용하여 loginUser 객체가 비어 있는지 확인한다.
Express의 route() 메소드를 사용하면 하나의 경로에 대해 여러 HTTP 메소드를 쉽게 정의할 수 있다. 이를 통해 코드의 가독성을 높이고, 유지보수를 용이하게 만들 수 있다.
const express = require('express');
const app = express();
app.route('/path')
.get((req, res) => {
// GET 요청 처리 로직
})
.post((req, res) => {
// POST 요청 처리 로직
})
.put((req, res) => {
// PUT 요청 처리 로직
})
.delete((req, res) => {
// DELETE 요청 처리 로직
});
app.listen(3000, () => console.log('Server running on port 7777'));
200
(OK): 요청이 성공적으로 처리되었다. 가장 일반적인 성공 상태 코드201
(Created): 요청이 성공적으로 처리되었고 새로운 리소스가 생성되었다.400
(Bad Request): 서버가 요청을 이해하지 못했다. 일반적으로 클라이언트의 요청 데이터가 형식에 맞지 않을 때 반환된다.401
(Unauthorized): 이 상태 코드는 인증 실패를 나타낸다. 주로 로그인 실패 시 사용된다..403
(Forbidden): 서버가 요청을 이해했지만 승인을 거부한다. 접근 권한이 없는 자원에 대한 요청에 사용된다.404
(Not Found): 서버가 요청한 리소스를 찾을 수 없다. 일반적으로 잘못된 URL에 대한 요청에서 반환된다.500
(Internal Server Error): 서버 내부에 오류가 발생했다. 서버가 요청을 처리할 수 없을 때 사용된다.동일한 경로를 묶어 정의할 수 있어 중복을 최소화할 수 있었다. 중복 되는 코드는 거의 없도록 노력하려하는데 이런 편리한 메소드가 있어 정말 편리한 듯하다. 🥹 상태 코드도 이제는 설명을 찾아보지 않고도 알 수 있을 것 같다.