NestJS Services
노마드코더 NestJS로 API 만들기 수강 중
Services 생성
nest g s movies
- 자동으로
movies
폴더 하위에movies.service.spec.ts
와movies.service.ts
파일 생성 app.module.ts
모듈에 서비스가 자동으로 등록
@Module({
imports: [],
controllers: [MoviesController],
providers: [MoviesService],
})
Services 정의
변수 정의
@Injectable()
export class MoviesService {
private movies: Movie[] = [];
...
}
Get
getAll(): Movie[] {
return this.movies;
}
getOne(id: string): Movie {
const movie = this.movies.find((movie) => movie.id === +id);
if (!movie) {
throw new NotFoundException(`Movie with ID ${id} not found.`);
}
return movie;
}
- movid id를 찾지 못하면 예외 처리
+id
로 문자열을 숫자 형태로 변환
Delete
deleteOne(id: string) {
this.getOne(id);
this.movies = this.movies.filter((movie) => movie.id !== +id);
}
- 삭제하기 전에 movie id를 먼저 검색해서 예외 처리
Post
create(movieData) {
this.movies.push({
id: this.movies.length + 1,
...movieData,
});
}
- id 자동 생성
Patch
update(id: string, updateData) {
const movie = this.getOne(id);
this.deleteOne(id);
this.movies.push({ ...movie, ...updateData });
}
- movie id를 먼저 검색, 예외 처리
- 해당 id 정보를 삭제 후 새로운 정보로 생성시켜 업데이트
Controllers 정의
Service Constructor 생성`
@Controller('movies')
export class MoviesController {
constructor(private readonly moviesService: MoviesService) {}
- NestJS에서는 서비스를 생성자로 생성해서 정의된 함수들을 불러옴
Get
@Get()
getAll(): Movie[] {
return this.moviesService.getAll();
}
@Get('/:id')
getOne(@Param('id') movieId: string): Movie {
return this.moviesService.getOne(movieId);
}
Post
@Post()
create(@Body() movieData) {
return this.moviesService.create(movieData);
}
Delete
@Delete('/:id')
remove(@Param('id') movieId: string) {
return this.moviesService.deleteOne(movieId);
}
Patch
@Patch('/:id')
patch(@Param('id') movieId: string, @Body() updateData) {
return this.moviesService.update(movieId, updateData);
}
[참조] 노마드코더 NestJS로 API 만들기
끝!