일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바스크립트
- on_delete
- 장고초기세팅
- 실행 컨텍스트
- JWT
- 프로미스
- 스코프
- 노드
- status code
- TypeError: this.boardRepository.createBoard is not a function
- django westagram
- Jest
- docker
- 호이스팅
- 트랜잭션
- javascript
- nodeJS
- pm2
- rebase
- typescript
- node
- Django
- CORS
- async/await
- OSI7계층
- wecode
- crud2
- manytomanyfield
- westagram
- bcrypt
- Today
- Total
될때까지
((과제3)) 프리온보딩 DAY 1 본문
# 인트로
3번째 기업과제는 새로운 프레임워크와 언어를 사용해서 과제를 진행하기로 했다.
Nest.js와 Typescript를 공부해서 3일안에 해당 과제를 완료해야한다 파이팅!!
# 모델링
이번 과제는 유저들이 서로 친구를 맺고 글을 올릴 수 있는 커뮤니티 앱 구현하기. 그리고 나는 팔로우, 언팔로우 기능을 맡게되었다.
- 팔로우
- POST /follows
- 첨부된 토큰을 디코드하여 우리 사이트의 유저인지 확인
- 팔로우할 유저의 email을 입력한다.
- 해당 email이 유저 테이블에 저장되어있는지 확인하고 해당 유저의 id값을 가져온다.
- 이미 팔로우한 내역이 있는지 팔로우 테이블에서 확인하고, 팔로우를 했다면 409 에러를 반환한다.
- 유저의 email도 존재하고 팔로우한 내역이 없다면 팔로우 신청에 성공한다.
- 언팔로우
- DELETE /follows
- 첨부된 토큰을 디코드하여 우리 사이트의 유저인지 확인
- 언팔로우할 유저의 ID를 입력받는다.
- 팔로우 테이블에 해당 유저를 팔로우한 내역이 있나 확인하고, 팔로우한 적이 없다면 400 에러를 반환한다.
- 팔로우한 내역이 존재한다면 언팔로우에 성공하고 데이터를 삭제한다.
일단 밑그림은 이정도로 생각했다. Nest를 공부해보자!
# Nest.js vs Express
Nest.js. 그리고 이제까지 사용했던 Express 이 두 프레임워크의 차이점이 뭘까?
Node.js하면 express가 아직까지 유명하다. 따라서 참고할 레퍼런스가 많다는 장점이 있다. express는 웹 서버를 빠르게 구현하기 위해 최적화되어있고 구조가 간단하고 가볍다. 구조에 대한 자유도도 높기 때문에 개발자가 필요한 툴이나 미들웨어를 선택해서 개발할 수 있다. 그렇기 떄문에 express를 사용하는 개발자들은 개발 구조가 통일되지 않는다는 단점이 생긴다. 내가 선호하는 툴, 내가 선호하는 미들웨어를 사용할테고 사람마다 선호도는 다르니까 🧐
반면에 Nest.js는 "nest g resource 이름" 명령어를 사용하면 이미 구조화된 파일들이 한번에 생성된다. 모듈, 컨트롤러, 서비스 등 파일의 역할이 명확하게 나뉘어져있다. 이를 모듈화된 구조라고 하더군? 생성된 구조에 맞게 코드를 작성하면 된다. 또 예외처리하는 모듈도 Django처럼 이미 많이 내장되어 있었다. typescript도 처음에는 새로운 언어라 겁먹었지만 까다롭게 체크해주니까 앱 개발 시 발생할 수 있는 오류들을 미리 방지할 수 있어서 좋았다. 또 모듈화되어있기 때문에 테스트 코드 작성에도 용이하다고 하다.
정리해보자면 다 갖춰져있으니까 내 구조에 너가 맞춰 프레임워크에는 Django, Nestjs가 있고
너가 구현하고 싶은 아키텍처를 마음껏 적용해봐 나는 최소한의 것만 제공해줄께 up to you 프레임워크에는 Flask, Express가 있다.
'프로젝트 > 프리온보딩' 카테고리의 다른 글
((과제3)) 프리온보딩 DAY 3 (0) | 2022.10.14 |
---|---|
((과제3)) 프리온보딩 DAY 2 - Nest.js Error : no repository found & this.boardRepository.createBoard is not a function (0) | 2022.10.13 |
((과제2)) 프리온보딩 DAY 3 (0) | 2022.10.09 |
((과제2)) 프리온보딩 DAY 2 (0) | 2022.10.09 |
((과제2)) 프리온보딩 DAY 1 (0) | 2022.10.08 |