(alias) Controller(prefix: string | string[]): ClassDecorator (+2 overloads)
import Controller
@Controller
는 경로(prefix)를 받아서 해당 경로에 대한 요청을 처리할 수 있는 컨트롤러를 정의하는 데 사용한다.이 prefix의 값은 해당 컨트롤러에 대한 모든 라우트의 경로에 적용되므로 기본 경로라고 볼 수 있다. 따라서 위의 코드에서 기본 경로가 /movie
임을 나타낸다.MoviesController
클래스는 @Controller 사용했기 때문에 해당 클래스는 주어진 경로에 해당하는 메서드(예제 코드에선 getAll,getOne,search)를 HTTP응답을 생성할 수 있다.(alias) Query(property: string, ...pipes: (PipeTransform<any, any> | Type<PipeTransform<any, any>>)[]): ParameterDecorator (+2 overloads)
import Query
@Query
는 HTTP 요청의 쿼리 파라미터에서 값을 추출하고 해당 값을 반환한다.property
는 추출하고자 하는 쿼리의 이름을 나타낸다. 즉, HTTP 요청에서 해당 이름과 일치하는 쿼리 파라미터를 찾아 값을 추출한다.?year=2000
과 같은 형식의 쿼리 값을 추출한다. 이 추출된 값에 대해 결과를 반환하거나 변환 또는 유효성 검사를 실행하는 데 사용하는 것이 두 번째 매개변수인 pipes
이다.(alias) Param(property: string, ...pipes: (PipeTransform<any, any> | Type<PipeTransform<any, any>>)[]): ParameterDecorator (+2 overloads)
import Param
@Param
는 첫 번째 매개변수인 경로 매개변수의 이름을 나타내고,property
값에 해당하는 값을 반환한다.이 반환 값을 두 번째 매개변수 pipes
에 할당하는 것이다.@Query
는 쿼리 파라미터의 값
을 받아올 때 사용한다.
(예. movies/search?year=2000), "?" 뒤
에 변수의 값을 받는다. 정렬이나 필터링을 할 때 주로 사용되고,
@Param
은 요청 주소에 포함되어 있는 값
을 받는다.
(예. /movies/333)
즉, 어떤 리소스를 식별하고 싶을 때 사용된다.
(alias) Body(): ParameterDecorator (+2 overloads)
import Body
@Body
는 HTTP POST req의 body에서 데이터를 추출하여 movieData 매개변수에 할당한다. @Post()
create(@Body() movieData) {
// @Body는 movieData안에 request의 body를 가져온다.(우리가 json형식으로 보내는 값 )
return movieData;
}
(alias) Post(path?: string | string[]): MethodDecorator
import Post
@Post
안에 경로(path)를 지정하지 않았으면 메서드가 속한 컨트롤러의 기본 경로로 사용되고,이 경로로 POST 요청을 보낸다. @Delete('/:id')
remove(@Param('id') movieId: string) {
return `${movieId}번 영화 삭제`;
}
@Delete
는 주어진 쿼리 파라미터의 값에 때라 삭제된다.@Patch(' /:id')
patch(@Param('id') movieId: string, @Body() updateData) {
return {
updateMovie: movieId, // 업데이트 할 movie id와 우리가 보낼 데이터 객체를 리턴
...updateData,
};
}
/* Patch에서 리턴된 값
{
"updateMovie": "12",
"name": "파묘",
"director": "장재현"
}
*/
@Patch('/:id')
는 주어진 id에 해당하는 영화를 찾아서, movieId
에 할당하고, 해당 영화의 정보를 업데이트하기 위해 req의 body에서 데이터를 추출한다.updateData
에 할당한다. 업데이트된 영화의 id와 함께 업데이트된 데이터를 반환하게 된다.