본문 바로가기

NestJs API 만들기

(12)
12. Testing 기본 package.json 파일을 보면 테스팅과 관련된 스크립트 test, watch, cov, debug, e2e 이렇게 5가지가 있다. jest는 자바스크립트를 아주 쉽게 테스팅하는 npm 패키지이다. 파일 생성 시 파일명 뒤에 .spec.ts가 붙은 파일들도 같이 생성되는데 .spec.ts는 테스트를 포함한 파일이다. jest가 .spec.ts 파일들을 찾아 볼 수 있도록 설정되어 있다. movies.controller.spec.tsimport { Test, TestingModule } from '@nestjs/testing';import { MoviesController } from './movies.controller';import { MoviesService } from './m..
11. REST API - Modules AND Dependency Injection 모듈을 좀 더 구조로 만들기 위해서는 app.module을 살펴보면app.module은 controller와 providers를 가지고 있다.그래서 app.module은 AppController와 AppProvied만 가지고 있어야 한다. ↓ nest g mo 명령어를 실행하고 module 이름을 입력 후 엔터를 누르면movies.module을 생성하고 app.module.ts.를 업데이트 된다.app.module.ts을 확인하면 MoviesModule이 imports로 갖게된 것을 확인할 수 있다. ↓ app.module.ts에서 controller와 providers를 비워놓는다. ↓ nest g co 명령어를 실행한 후 이름을 무엇으로 할건지 물어보면 app을 입력 후 엔터를 누르면app폴더 내..
10. REST API - DTO(Data Transfer Obejct) AND Validation (2) 읽기전용으로 하고 필수값은 되지 않도록 한다.왜냐하면 title, year, genres 속성(property) 중 title,year만 수정할 수도 있기 때문이다. updateData 타입은 UpdateMovieDto 준다. @IsOptional 은 class-validator에서 제공하는 유효성 검사 데코레이터(Decorator)로, 해당 속성이 요청에서 없어도 검증 에러를 발생시키지 않도록 허용할 때 사용된다.데코레이터 조합의미@IsString()값이 반드시 있어야 하고 문자열이어야 함@IsOptional() @IsString값이 없으면 통과, 있으면 문자열이어야 함
09. REST API - DTO(Data Transfer Obejct) AND Validation (1) validatior를 적용하기 위해 class-validator, class-transformer 라이브러리를 설치한다. main.ts 파일에 추가한 ValidationPipe와 Typescript를 활용한 타입으로 유효성 검사를 하기 위해 Dto(Data Transfer Obejct) 객체를 생성한다.class-validator를 임포트한 후 유효성을 체크할 속성(Property)에 @IsString, @IsNumber 데코레이터(Decorator)를 설정한다. main.ts 파일에서 ValidationPipe 옵션 중 whitelist를 true로 하게 되면 DTO에 정의되지 않은 프로퍼티는 자동으로 제거된다.예를들어, DTO에는 title, year, genres 속..
08. REST API - Movies Service (2)
07. REST API - Movies Service (1) 터미널에서 nest 명령어를 실행하면NestJS CLI(Command Line Interfece)에는 generate(생성) 명령어가 있는데 nest g s 명령어를 실행하면 명칭을 무엇으로 할건지 나오는데movies라고 입력 후 엔터를 누르면 해당 파일이 생성된다. app.module.ts 파일을 보면 providers에 moviesService가 생겨난것을 확인할 수 있다. movie.entity.tsexport class Movie{ id:number; title:string; year:number; genres:string[];} movies.controller.tsimport { Body, Controller, Delete, Get, Param, Patch,..
06. REST API - Http Decorator @Get, @Post @Patch @Delete - HTTP 메소드에 해당하는 데코레이터- 이때, @Query(), @Body(), @Param()과 같은 데코레이터와 같이 사용할 수 있다. : @Query() -> 쿼리 스트링 : @Body() -> 요청의 Body 부분 인출 : @Param() -> URL 인자 인출 ⬇Controller에 Get 요청으로 /movies/search 요청을 할 수 있도록 추가했다고 하더라도코드 순서상으로 /movies/:id 로 응답하게 되기 때문에 순서를 바꿔줘야 한다!!!
05. REST API - Movies Contorller 터미널에서 nest 명령어를 실행하면 generate(생성)이 보일텐데 터미널을 통해 NestJS의 관한 것을 생성할 수 있다. Controller를 생성하고자 하는데 명령어를 확인할때 nest 명령어를 실행하면 nest g co 라는걸 확인할 수 있는데nest g co 명령어를 실행하면 Controller 이름을 묻는데 Movie로 입력을 하게 되면src 폴더 하위에 해당 Controller가 생성되는걸 확인할 수 있으며 app.modules.ts 파일에 MoviesController가 import가 된다. spec 파일은 테스트 파일이기 때문에 삭제한다.@Controller 인자 부분이 url의 Entry Point를 컨트롤 한다.