-
Notifications
You must be signed in to change notification settings - Fork 4
Backend Architecture
STak edited this page Nov 3, 2020
·
1 revision
- front와 통신을 한다
- 사용자 인증 등 공통된 작업들은 middleware를 사용한다.
//index.route.js
router.use('/users', validateAuth, usersRouter);
//validateAuth.js
module.exports = function(req, res, next) {
if (!req.body.password || !req.body.username) {
return res.status(400).json('improper datas');
}
next();
}
- 요청에 맞게 controller를 불러온다.
router.get('/', accountController.getTransaction);
router.post('/', accountController.addTransaction);
- route에서 받아온 데이터를 추출 해서 서비스에 넘긴다
- 받아온 데이터에 따라 status code와 json을 돌려준다.
- 에러는 catch 로 잡아서 구분한다.
const login = async (req, res) => {
try {
const { username, password } = req.body
const token = await authService.login({ username, password });
return res.status(200).json(token);
} catch (err) {
const { message } = err;
if (message === 'login failed') {
return res.status(400).send();
}
return res.status(500).send();
}
- controller에서 받아온 데이터를 추가 작업이 필요하면 적용한다.
- 추가 작업은 밑에 예제 처럼 JWTToken 부르는 작업 등...
- 필요한 데이터가 있으면 모델에 요청한다.
- 데이터에 따라 에러를 발생시킨다.
async login({ username, password }) {
const user = await userModel.checkUser({ username, password });
if (user) {
return JWTToken.createToken(username);
}
throw new Error("login failed");
}
- service에서 요청한 데이터를 db에서 가져온다.
async checkUser({ username, password }) {
return await User.findOne({
where: { username, password },
})
},
개발 일지
데일리 스크럼