import { Module } from '@nestjs/common';
import { MoviesController } from './movies/movies.controller';
import { MoviesService } from './movies/movies.service';
@Module({
imports: [],
controllers: [MoviesController],
providers: [MoviesService],
})
export class AppModule {}
현재 구조인데
사실 app.module은 AppController랑 AppProvider만 가지고 있어야한다.
그래서 여기있는 MoviesService랑 MoviesController를 movie.module로 옮겨볼거다
왜냐면 NestJS 에서 앱은 여러개의 모듈로 구성 되기때문.
그래서 이경우 에는 app.module은 AppService랑 AppController만 가져야한다.
CREATE src/movies/movies.module.ts (83 bytes)
UPDATE src/app.module.ts (348 bytes)
import { Module } from '@nestjs/common';
import { MoviesController } from './movies/movies.controller';
import { MoviesService } from './movies/movies.service';
@Module({
imports: [],
controllers: [MoviesController],
providers: [MoviesService],
})
export class AppModule {}
에서
import { MoviesModule } from './movies/movies.module';
추가 되고
import { Module } from '@nestjs/common';
@Module({})
export class MoviesModule {}
이제 app.module은 app.controller라 불리는 controller를 가지고 있다.
import { MoviesModule } from './movies/movies.module';
import { AppController } from './app/app.controller';
@Module({
imports: [MoviesModule],
// controllers: [MoviesController, AppController],
controllers: [AppController],
providers: [],
})
export class AppModule {}
잘 작동하는지 check - nest start --watch
잘 작동한다면
이 controller에서 뭘 하게 만들면 될까 ?
일단 웰컴 페이지 하나를 가져오게 해보자
import { Controller, Get } from '@nestjs/common';
@Controller('')
export class AppController {
@Get()
home() {
return 'Welcome fucker~'
}
}
이게 AppController 를 가질때 app.controller가 하는일이다.
즉, 구조가
import { MoviesModule } from './movies/movies.module';
import { AppController } from './app/app.controller';
@Module({
imports: [MoviesModule],
// controllers: [MoviesController, AppController],
controllers: [AppController],
providers: [],
})
export class AppModule {}
const app = await NestFactory.create(AppModule);
@Get()
getAll() :Movie[] {
return this.movieService.getAll()
}
@Controller('movies')
export class MoviesController {
constructor(private readonly movieService: MoviesService) {} // 이 부분 property만들고 타입지정
@Get()
getAll() :Movie[] {
return this.movieService.getAll()
}
타입 만 import해서 쓰고 있다. (MoviesService)
app.modules.ts 파일 보면
import { Module } from '@nestjs/common';
import { MoviesController } from './movies.controller';
import { MoviesService } from './movies.service';
@Module({
controllers: [MoviesController],
providers: [MoviesService],
})
export class MoviesModule {}
providers: [MoviesService]
이렇게 주면 @Get()
getAll(@Req() req, @Res() res): Movie[] {
return this.movieService.getAll()
}
근데 NestJS가 이 두개의 프레임워크에서 돌아가는데
Express 에서 req,res객체를 많이 사용하지 않는게 왜 중요 하지 ?????
- 내 생각으로는 NestJS 에서 프레임 워크를 쓰는건데 Express에서 쓰는 req, res객체를 req.json 이렇게 접근하는 방식이 Fastifty에선 원하는 방식이 아닐수도 있으닌가 나중에 호환성을 위해 한족으로 치우쳐저 있는 방식으로 하지 말라는것 같다.