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,
};
}
}