Search

#019 #Controller 패턴 / 동적 라우팅

 controller

 이름 지정

@Controller에 이름을 넣을 수 가 있는데, 위 처럼 이름이 cats 라고 지정이 되면, 해당 컨트롤러는 http://localhost:8000/cats 의 엔드포인트를 수신한다.

 확인

컨트롤러에 이름을 지정해주니 /를 받는 주소가 없어서 not found가 발생한다.
컨트롤러에 명시된 cats를 URI에 넣게 되면 cats 엔드포인트의 GET메소드를 호출하게 되어서 Hello World가 찍히게 된다.

 controller URI 조합

 URI조합하기

AppController는 /cats 엔드포인트를 수신하고, 내부의 @Get(’hello) 데코레이터는 /cats/hello 엔드포인트를 수신한다. 따라서 http://localhost:8000/cats/hello 를 요청하게 되면 Hello Wolrd! 가 찍히게 될 것.

 테스트하기

보는 바와 같이 데코레이터의 괄호에 넣은 단어로 URI를 조합하였다.

 요청 객체

 @Req

컨트롤러 메소드에 매개변수를 어노테이션으로 넣을 수 있다. 이 때 Request는 Express것을 임포트 해서 사용한다.
요청하고 콘솔도 찍어보면
이렇게 req객체가 어떻게 날아오는 지 확인할 수 있다. body도 값을 가져올려면 req.body 로 가져왔었는데, 원한다면 @Body 로 매개변수로도 받아올 수 있다.

 동적 라우팅

 @Param

@Param 어노테이션을 사용하면 동적라우팅에 들어오는 값들을 매핑할 수 있다.

 postman 테스트

메소드에 new Logger.log(Param); 을 추가해서 동적라우팅으로 어떻게 값을 받아오는 지 확인해보자.
postman으로 기존 요청주소에 :id 에 바인딩 될 수 있는 값을 넣어보고 테스트를 해보면 리턴 값이였던 Hello World! 가 찍히는 것을 확인할 수 있고
:id 에 넣어줬던 값은 JSON 형태로 키 & 밸류 형태로 전달 받은 것이 확인된다.

 응용

그럼 이렇게 hello/:id/:name 으로 설정하면 Param에는 값이 어떻게 담기게 될까???
이렇게 JSON데이터로 받게 된다. 중요한 점을 객체로 담을수 있다는거
실제로는 비즈니스로직은 서비스로 넘겨서 분리시켜준다.

 추가 데코레이터

 Post도 적용가능

공식 문서인데, 이렇게 @Get 뿐만 아니라 @Post 도 가능하다!

 상태코드 추가가능

요청의 응답에 상태 코드 또한 담을 수 있다.

 추가 기능은 문서 확인

되게 많은 기능이 있어서 추가 기능은 들어가서 확인