4번째 프로젝트 리펙토링을 했다.
Language: Node.js,
Framework: Express.js
ORM: sequelize
3계층, 소켓, 타입스크립트 적용, 쇼셜 로그인 API, 페이지네이션
router 폴더에 담은 api 들을 계층별 폴더를 만들어 코드들을 정리해 나갔다.
user.routers.js
router.get('/list', userController.getUsers);
//컨트롤러와 연결
class UserController {
//UserService 클래스를 컨트롤러 클래스의 맴버 변수로 할당
userService = new UserService();
// 맴버변수로 정의한 UserService 에서 메소드를 실행
getUsers = async (req, res, next) => {
const allUsers = await this.userService.allUsers();
// 컨트롤러에서는 하위 계층이 어떠한 내부 구조를 가지고 있는지 신경쓰지 않고, 외부에 드러나 있는 메소드를 호출하기만 한다. 이것이 가능한 이유는 추상화(Absctraction)의 특성 덕분
res.status(200).json({ allUsers });
};
};
일반적으로 성공했을 때
status 200
수정을 성공했을 때(회원가입 이거나 수정)
status 201
에러 났을 때
status 400
이미 구현한 라우터를 분리하려니 새로운 함수 이름도 정의해주어야 하고, 왔다 갔다 하며 코드를 수정하다보니 user CRUD 에 대한 로직을 이해하는데 도움도 됐다.