강의의 질이 정말 높은 노마드코더!
하루 정도 NestJS 공식문서를 살펴보면서 씨름하다가 강의가 있지 않을까하고 찾아봤는데 역시나 있었다.
- 어렵지 않다. (쉽다는 것은 아니다.)
- Backend에 대해 조금이라도 공부해본 사람이 들으면 정말 훌륭할 듯.
- Insomnia의 간편함을 알려준다.
- NestJS는 무언가 필요하면 반드시 요청해야한다. (디테일하게 코드를 짤 수 있을 듯)
- 코드는 main.ts에서 돌아간다.
- 터미널에서 nest 명령어를 실행하면 NestJS의 명령어들을 한 눈에, 그리고 축약어로 알아볼 수 있다.
- (Django와 같은 부분이지만) Decorator는 클래스에 함수기능을 추가해서 클래스 위에서 움직인다.
- service.ts -> 로직을 생성하는 곳
controller.ts -> 생성한 로직을 실행시킬 곳- controller란?
url 매핑, request 받기, query 제공, Body 등을 넘겨준다.- DTO를 활용하면 좋은점
코드를 보기 간편해진다.- validator와 transform 활용이 정말 멋드러진다.
transform을 사용하면 생산성에서 엄청난 이득을 볼 수 있다.- < mapped-types > : 타입을 반환시키고 사용할 수 있게하는 패키지다.
- DI (Dependency Injection) :
모듈 내부에서 자동적으로 import하고 controller에 injection 한다.- jest란?
js를 테스팅하는 npm 패키지이다.- spec.ts 파일? Feat.(describe, it)
테스트를 실행할 수 있는 파일. (ex. e2e, unit test)
- Unit test
예를 들어 함수 하나를 따로 테스트하고 싶을 때 only spec.ts 파일을 사용!- e2e test ( End to End ) -> test 폴더에 들어있다.
모조리 테스트한다.
사용자 스토리 형식으로 진행 가능하다.
- 왜 테스팅 서버에서 id는 string이고 실제 서버에서의 id는 number인가?
controller를 살펴보면 transform을 이용해서 number로 지정해둔 것이다.- 그러면 왜 e2e 테스트에서는 transform이 돌아가지 않는가?
Pipe에 올려둔 것이 없기 때문에 설정을 해줘야한다!
app.useGlobalPipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, }), );
이런 식의 pipe를 e2e 파일의 beforeAll 혹은 beforeEach에 추가해주어야 한다! ( application 생성 후에! )
- Correctors
- Providers
- DI
- Unit test, e2e test
- DTO
- 전에 React를 했을 때 JS에 대한 다소 두려움이 없지 않아있었다.
- TypeScript를 공부하고 NestJS를 공부하다보니 JS 형식에 대해 겁이 사라졌고 오히려 디테일하다는 것을 새삼 느낄 수 있었다.
- 본의 아니게 NestJS를 시작했지만 추후에 Spring과도 이어질 수 있으니 좋지 않을 수가 없다!