설치를 하고
npm run start:dev
로 하고await app.listen(3000);
로 설정된http://localhost:3000/
으로 들어가면 'Hello World!' 가 나온다. 해당 파일을 보고 어떻게 실행이 되는지 알아보자.
src/ | ├── app.controller.spec.ts | ├── app.controller.ts | ├── app.module.ts | ├── app.service.ts | └── main.ts
import { NestFactory } from '@nestjs/core'; 🔵 NestJS의 핵심 모듈인 NestFactory를 가져옵니다.
import { AppModule } from './app.module'; 🔵 애플리케이션의 루트 모듈인 AppModule을 가져옵니다.
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000); 🔵 애플리케이션이 3000번 포트에서 수신 대기하도록 설정합니다.
}
bootstrap();
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get() 🔵 '/' 엔드포인트
getHello(): string {
return this.appService.getHello();
}
}
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
🔵 리턴 헬로 월드!
getHello(): string {
return 'Hello World!';
}
}
express.js
app.use('/api/user', require('./routes/user')); 🔵 ex) 유저에 관한 => ./routes/user
app.use('/api/board', require('./routes/board'));
app.use('/api/auth', require('./routes/auth'));
router.get("/", userController.getUsers); 🔵 ex) 유저 ./routes/user => 모든유저를..
router.get("/:bandId", userController.getUser); 🔵 ex) 유저 ./routes/user => 특정유저를..
router.put("/", userController.updateUser);
router.delete("/", userController.deleteUser);
🔵 ex) 모든유저를 가져오는 함수
export const getUsers = async(req, res) {
let users = db.getUsers();
return users
}
Nest.js
@Module({
imports: [
TypeOrmModule.forRoot(typeORMConfig),
BoardsModule, 🔵 ex) 게시물에 관한 => board.controller.ts
AuthModule,
UserModule
],
})
export class AppModule {}
@Get() 🔵 엔드포인트 => board.service.ts
getAllBoards(
@GetUser() user: User,
) : Promise<Board[]> {
this.logger.verbose('User "${user.username} trying ... all boards`);
return this.boardsService.getAllBoards(user);
}
@Get('/:id') 🔵 엔드포인트
getBoardById(
@Param('id', ParseIntPipe) id: number,
@GetUser() user: User,
) : Promise<Board> {
return this.boardsService.getBoardById(id, user);
}
🔵 DB작업 , 연산 => return
async getAllBoards(
user: User,
) : Promise<Board[]> {
const query = this.boardRepository.createQueryBuilder('board');
query.where('board.userId = :userId', { userId: user.id})
const boards = await query.getMany();
return boards;
}
출처: JhonAhn님의 유튜브 강의 NestJS를 참고하여 작성하였습니다.