개인적인 학습을 기록한 글이며, 정확하지 않을 수 있습니다.
틀린점은 지적해주시고, 참고만 해주시기 바랍니다
난 자바 스프링이 주종인데 뭔가 MZ한 스타일 스타트업은 Nest + TypeScript 사용하는 듯.. JS 잘하는 편은 아니지만 TS에도 관심이 많았기 때문에 한번 찍먹해보려고 했다. 도커나 다듬을거나 아직 배울께 많지만 잠깐에 휴식할겸 Nest+ TypeScript 한번 잠깐 땡땡이 쳐보자
그냥 공식문서 따라하기...이다..
$ npm i -g @nestjs/cli
$ nest new project-name
패키지 매니저 선택
? Which package manager would you ❤️ to use?
npm
yarn
❯ pnpm
pnpm 궁금하긴했지만 웬지 마이너한 패키지 관리자 일꺼 같아서 yarn 을 선택하기로 했다. !
yarn run srart
실행하구 localhost:3000
짜잔 !
src 구조를 보자 !
소스
|----app.controller.spec.ts
|----app.controller.ts
|----app.module.ts
|----app.service.ts
|----main.ts
nset g controller post
요롷게 하면 cotroller 틀을 만들어준다 편하다 !
$ nest g service post
post.service.ts
//post.service.ts
import { Injectable } from '@nestjs/common';
import { Post } from './interfaces/post.interface';
@Injectable()
export class PostService {
private readonly posts: Post[] = [];
create(post: Post) {
this.posts.push(post);
}
findAll(): Post[] {
return this.posts;
}
}
export interface Post {
name: string;
title: string;
content: string;
}
post.controller.ts
import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common';
import { CreatePostDto } from './create-post.dto';
import { PostService } from './post.service';
import { Posts } from './interfaces/posts.interface';
@Controller('post')
export class PostController {
constructor(private postService: PostService) {}
@Get()
async findAll(): Promise<Posts[]> {
return this.postService.findAll();
}
@Post()
async create(@Body() createPostDto: CreatePostDto) {
console.log(createPostDto);
this.postService.create(createPostDto);
}
}
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { PostController } from './post/post.controller';
import { PostService } from './post/post.service';
@Module({
imports: [],
controllers: [AppController, PostController],
providers: [AppService, PostService],
})
export class AppModule {}
마지막으로 Postman, insomia같은 툴로 확인해보자
잘 동작한다!.