ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 14주차 TIL (4)
    TIL ( Today I Learned) 2023. 2. 16. 11:09

    오늘은 어제 작성했던 dto 파일 수정과 컨트롤러 파일 수정, 서비스 파일 작성을 해보도록 하겠다.

     

    우선 어제 작성했던 create, update, delete dto 파일은 똑같은 유효성 검사를 하기 때문에 코드가 길어지고 중복되는 문제점이 있다.

    그래서 우리는 update, delete dto 를 수정해줄 것이다.

    그러기 위해서 우선 첫번째 우리는 update, delete dto를 create dto 에서 상속받아 사용을 할 것이기 때문에 우선 다음과 같은 패키지를 받는다.

    $ npm i @nestjs/mapped-types

    우선 

    첫번째로 update dto 는 create 와 똑같은 유효성을 검사하기 때문에 PartialType 을 상속받을 것이고,

    두번째로 delete dto 는 create 에서 password 만 유효성 검사를 하기 때문에 PickType을 상속받을 것이다.

    update-article.dto.ts
    delete-article.dto.ts

    이렇게 코드를 수정해주면 아주 깔끔하게 정리가 가능하다.

    여기서 중요한점은 우리가 DTO의 유효성 검사를 하기 위해서는 main.ts에 ValidationPipe 를 주입해야 한다.

    main.ts

    이것으로 dto의 유효성을 검사하기 위한 준비는 완료 되었고 다음으로 컨트롤러 파일을 수정해 보도록 하겠다.

    board.controller.ts

    우선 어제 코드의 문제점이 무엇이냐면 바로 :id 를 파라미터로 받는것과 게시글을 작성할 때 제목, 내용, 비밀번호와 같은 데이터를 받는것인데 그렇게 하기 위해서 우리는 @Param, @Body 데코레이터를 사용해줄 것이다.

     

    board.controller.ts 수정

    이때 우리는 id 의 타입을 number 라고 했지만 실질적으로 파라미터로 들어오는 id 의 타입은 string 형식으로 들어오게 된다. 따라서 우리는 이 id 의 타입을 바꿔주기 위해 main.ts 에 transform: true 을 통해 타입변환을 해줄 것이다.

    main.ts

    다음으로는 서비스 코드를 작성해 보겠다.

    board.service.ts

    이렇게 컨트롤러에서 넘겨준 데이터를 받아 실질적으로 비즈니스 로직을 수행하는 service 코드를 짜보았는데,

    UnauthorizedException NotFoundException 이라는 예외가 있는데 이것은 실제 HTTP상태 코드에 해당하는 예외 이다. Nest.js 에서는 수동으로 상태코드를 입력해서 리턴할 필요가 없고 이미 정의된 예외를 던지기만 하면 전혀 문제가 없다.

     

    * 주의할점 

    지금까지의 코드중에 함수의 이름을 보면 다른점이 하나 있다.

    나는 처음 함수의 이름을 적을 때 단수 복수 에 대한 차이점 없이 s 를 붙였지만 이것은 좋지 않은 습관이다.

    그래서 후반부에는 함수의 이름을 다시 바꿔주었는데 앞으로도 유의하면서 코드를 작성해야겠다.

    'TIL ( Today I Learned)' 카테고리의 다른 글

    14주차 TIL (3)  (0) 2023.02.15
    14주차 TIL (2)  (0) 2023.02.14
    14주차 TIL (1)  (0) 2023.02.13
    10주차 TIL (4)  (0) 2023.01.19
    10주차 TIL (2,3)  (1) 2023.01.18
Designed by Tistory.