2. Nest.js
Movies Controller
generate 명령어를 사용하여 Nest.js의 거의 모든 것을 생성할 수 있다.
이것을 이용하여 새로운 컨트롤러를 만들어본다.
nest g co //nest generate controller
명령어를 실행하면 app.modules.ts controllers 부분에 자동으로 moviesController가 들어가있는 것을 확인할 수 있다.
컨트롤러 생성
Get
movies.controller.ts 파일에 새로운 컨트롤러를 생성해본다.
@Controller("movies")
export class MoviesController {
@Get()
getAll() {
return "this will return all movies";
}
}
이때 @Controller의 movies는 엔트리 포인트를 설정한다. 이 함수를 실행하기 위해서는 url에 /movies를 붙여야 한다.
nestjs에서는 무언가가 필요하다면 요청을 해야 한다.
그러기 위해서 getOne()에서 요청하는 방법은 parameter 요청이 있다.
@Get("/:id")
getOne(@Param('id') id:string) {
return `this will return one movie with the id: ${id}`;
}
파라미터를 이용하여 원하는 영화의 id를 연결해줄 수 있다.
Post
@Post()
create(){
return 'this will create a movie';
}
Delete
@Delete("/:id")
remove(@Param('id') id:string){
return `this will delete a movie id: ${id}`;
}
Put
put은 CRUD중 업데이트를 담당하는데, 모든 리소스를 업데이트 하기 때문에 사용에 주의를 해야 한다.
Patch
patch는 put과 다르게 리소스의 일부분만 업데이트를 한다.
More routes
이제 post를 통해 영화의 내용을 가져오기 위한 작업을 수행해보자.
@Post()
create(@Body() movieData) {
return movieData;
}
Insomnia를 통해 json 파일의 데이터를 임의로 생성하여 사용한다.
Search
@Get("search")
search() {
return `we are searching for a movie with a title: `
}
이때 search가 :id 보다 아래에 있을 경우 search를 아이디로 인식해버리기 때문에 위로 올려주도록 한다.