[코팩] NestJs 컨트롤러 다뤄보기

Seong Hyeon Kim·2024년 2월 6일
0

NestJs

목록 보기
4/14

프로젝트 주제는 인스타그램 같은 SNS 입니다

각각의 역할

프로젝트 폴더의 /src/app.controller.ts

경로를 열어서 기본 컨트롤러에서 진행해보겠습니다.

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

1️⃣
interface Post{
  author : string
  title : string
  content : string
  likeCount : number
  commentConut : number
}

2️⃣
@Controller('post')
export class AppController {
  constructor(private readonly appService: AppService) {}
  
  3️⃣
  @Get('hani')
  getPost():Post {
    return {
      author : 'newjeans_official',
      title : '뉴진스 민지',
      content : '메이크업 고치고 있는 민지',
      likeCount : 10000,
      commentConut : 2000
    }
  }

}

우선 다음과 같이 컨트롤러 파일의 코드를 미리 변경해놓고 차근차근 설명하겠씁니다.

4️⃣5️⃣


interface
1️⃣ 번 부분을 보면 interface 와 Post 라고 작성을 해놓았는데요, 이 부분은 포스팅을 위한 타입을 미리 지정하기 위해서 생성하였습니다.

작성방법은 코드처럼 interface 라고 선언한 후 목적에 맞는 이름을 추가로 작성한 후 객체형태로 만들면 됩니다.


Controller
2️⃣ 번부분을 보면 컨트롤러라고 작성후 괄호안에 'post' 를 작성해둔 것은 해당 컨트롤러를 의미하는 클래스의 path 에는 반드시 post로 시작해야된다 라는 의미로 작성된 부분입니다.

  • 이제 저 클래스 안의 라우터로 작성되는 모든 코드들은 http://localhost:3000/post 로 시작하게 만들겠다 prefix 를 붙인것이라 라고 명시한 부분으로 생각하면 됩니다.


Decorator
3️⃣ 번부분 역시 url의 path 를 설정하기 위한 부분으로 사용되며 2번에서 설명한것과 동일하게 작용됩니다.

  • 하지만 이미 이전에 2번의 컨트롤러 코드에서 post 를 미리 작성해놓은 부분이 있기때문에 이 경우에는 http://localhost:3000/post/hani 로 시작하게 만들겠다 라고 명시한 부분으로 생각하면 됩니다.





새로운 컨트롤러 만들어서 쓰기

  • 현재는 기본 src 폴더에 처음부터 생성되있는 app 컨트롤러를 사용하고 있지만 그건 예시를 위한것으로 보통은 내가 원하는 형태의 컨트롤러를 만들어서 사용하는게 일반적입니다 ex) user, post, comment 등등

그래서 이어서 nest cli 로 컨트롤러 만드는 것부터 다시 해보겠습니다.

  1. 새로운 터미널창을 열고 nest g resource 입력후 실행

  1. 지금 만들것은 포스팅 관련 내용이기때문에 post 를 다시 입력해주면 어떤 트랜스폼을 사용할지 선택하라고 나오는데 여기서 REST API를 선택해줍니다.

  1. 이후에는 n 을 눌러주면 자동으로 생성이 되는것을 볼수 있습니다.

  1. 이제 완성된 posts 컨트롤러로 들어가서 기존에 작성한 코드내용을 잘라내기 해서 붙여주면 되는데요, 이때 Get 메소드가 기존에 앱컨트롤러에는 있었는데 지금 컨트롤러에는 불러오기가 안되어 있어서 에러가 발생하는데요,
    직접 입력해 줘도 되지만 사진처럼 빠른수정을 사용해서 nestjs가 자동으로 불러오기를 할 수 있게도 가능합니다.
profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 백엔드 개발자

0개의 댓글