NestJs API 만들기
07. REST API - Movies Service(1)
본시모니
2025. 5. 20. 11:23
터미널에서 nest 명령어를 실행하면
NestJS CLI(Command Line Interfece)에는 generate(생성) 명령어가 있는데
nest g s 명령어를 실행하면 명칭을 무엇으로 할건지 나오는데
movies라고 입력 후 엔터를 누르면 해당 파일이 생성된다.
app.module.ts 파일을 보면 providers에 moviesService가 생겨난것을 확인할 수 있다.
movie.entity.ts
export class Movie{
id:number;
title:string;
year:number;
genres:string[];
}
movies.controller.ts
import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from '@nestjs/common';
import { MoviesService } from './movies.service';
import { Movie } from './entities/movie.entity';
@Controller("movies")
export class MoviesController {
constructor(private readonly moviesService: MoviesService) {}
@Get()
getAll():Movie[]{
return this.moviesService.getAll()
}
@Get(":id")
getOne(@Param('id') movieId: string): Movie {
return this.moviesService.getOne(movieId);
}
@Post()
create(@Body() movieData){
return this.moviesService.create(movieData)
}
@Delete(":id")
remove(@Param("id") movieId:string){
return this.moviesService.deleteOne(movieId)
}
@Patch('/:id')
patch(@Param('id') movieId: string, @Body() updateData) {
return {
updateMovie:movieId, ...updateData
}
}
}
movies.service.ts
import { Injectable, NotFoundException } from '@nestjs/common';
import { Movie } from './entities/movie.entity';
@Injectable()
export class MoviesService {
private movies:Movie[] = [];
getAll():Movie[]{
return this.movies;
}
getOne(id:string):Movie{
//return this.movies.find(movie=>movie.id === +id);
const movie = this.movies.find(movie=>movie.id === +id);
if(!movie){
throw new NotFoundException(`Movie with ID ${id} not found`);
}
return movie
}
deleteOne(id:string):boolean{
this.movies.filter(movie=>movie.id !== +id);
return true;
}
create(movieData){
this.movies.push({id:this.movies.length + 1, ...movieData});
}
}