1. Controller

수원 개발자·2023년 11월 23일
0

NestJS

목록 보기
3/15


nest 프로젝트를 생성하고 app.controller.ts 파일로 왔다.
Post에 author, title, content, likeCount, commentCount의 항목들을 넣어주려고 한다.
그러기 위해 Interface를 생성해줬다.

/**
 * author : string
 * title : string
 * content : string
 * likeCount : number
 * commentCount : number
 */

interface Post {
  author: string;
  title: string;
  content: string;
  likeCount: number;
  commentCount: number;
}

그리고 컨트롤러에 요청을 하면 받을 수 있게 더미 데이터도 하나 생성해줬다.

@Controller()
export class AppController {
  @Get()
  getPost(): Post {
    return {
      author: 'newjeans_official',
      title: '뉴진스 민지',
      content: '메이크업 고치고 있는 민지',
      likeCount: 100000000,
      commentCount: 9999,
    };
  }
}

여기서 2개의 데코레이터가 있다.
첫 번째는 Controller이고 두 번째는 Get이다.
이들에게 Path를 부여해줄 수 있다.
Controller에 path를 부여해주면 컨트롤러 안에 있는 모든 항목들에 대해 path가 부여된다. 예를 들면 Controller('post')라고 하면 /post로 들어가면 해당 더미 데이터를 받을 수 있다.
Get에 path를 부여해주면 세부 path를 부여 할 수 있다.
Get('post')를 해주면 Controller의 path/post로 하면 해당 더미데이터를 받을 수 있다.
이렇게 path를 지정해주면 된다.

그러나 이런 식으로 진행하지는 않는다. 왜냐하면 Controller는 기본이 되는 뿌리 역할이고 각자의 파트에 맞게 모듈을 생성해 줄 것이기 때문이다.
그렇기 때문에 Post 항목을 따로 만들어 주겠다.

// Terminal

➜  Nest git:(main) ✗ nest g resource

? What name would you like to use for this resource (plural, e.g., "users")? posts
? What transport layer do you use? REST API
? Would you like to generate CRUD entry points? No

이런 식으로 src/posts 폴더가 새로 생성되었다.
그리고 기존에 작성한 것들을 옮겨주었다.

// posts.controller.ts

import { Controller, Get } from "@nestjs/common";
import { PostsService } from './posts.service';

/**
 * author : string
 * title : string
 * content : string
 * likeCount : number
 * commentCount : number
 */

interface Post {
  author: string;
  title: string;
  content: string;
  likeCount: number;
  commentCount: number;
}

@Controller('posts')
export class PostsController {
  constructor(private readonly postsService: PostsService) {}

  @Get()
  getPost(): Post {
    return {
      author: 'newjeans_official',
      title: '뉴진스 민지',
      content: '메이크업 고치고 있는 민지',
      likeCount: 100000000,
      commentCount: 9999,
    };
  }
}

0개의 댓글

관련 채용 정보