본문 바로가기
✨ Back-end/etc

@RestController와 @RequestMapping @PathVariable ( 경로변수 )

by 환풍 2023. 8. 28.
728x90
반응형

 

@RestController와 @Controller의 차이

 @Controller

이렇게 하고 실행하면

 Error resolving template [a], template might not exist or might not be accessible by any of the configured Template Resolvers

이런 오류가 뜬다.

@RestController

하지만 @Controller 대신에 @RestController를 사용하게 되면, 위와 같이 페이지가 잘 나타난 것을 확인할 수 있다.

 

@Controller

이 어노테이션을 사용한 클래스는 일반적으로 뷰 렌더링을 위해 사용되며, HTML을 포함한 다양한 타입의 응답을 생성할 수 있다. 주로 서버 사이드 렌더링을 위해 사용된다.

 

@RestController

RESTful 웹 서비스를 개발할 때 사용된다. 이 어노테이션을 사용한 클래스는 JSON, XML 등의 형식으로 데이터를 직접 반환할 때 사용한다. 내부적으로 @ResponseBody 어노테이션을 포함하고 있어, 메서드의 반환 값은 자동으로 HTTP 응답의 본문으로 변환된다.

 

따라서, @Controller는 주로 뷰를 렌더링하기 위해 사용하며,

@RestController는 JSON, XML 등의 데이터를 직접 반환하기 위해 사용한다.

또, @RestController는 @Controller와 @ResponseBody를 결합한 형태이기도 하다.

 

만약 Controller에서 문자열 데이터를 띄우고 싶다면, response로 html을 직접 그리고, thorws 처리를 해주면된다.


@RequestMapping

RequestMapping은  GET, POST, PUT, PATCH , DELETE, HEAD 등 모든 메서드로 받아줄 수 있다.

 

Mapping과 관련된 어노테이션은 위와 같다

 

 

위 코드는 @RequestMapping과 @GetMapping 둘다 같은 주소를 갖고 있다. 실행하면 어떻게 될까?

@GetMapping 주소값으로 실행된 것을 확인할 수 있다.

 

요청 메서드에 따라 다른 메서드를 호출하는 방식을 사용할 때,

주소가 동일한 경우에는 가장 구체적인 어노테이션이 우선순위를 가진다.

따라서 이 경우에는 @GetMapping 어노테이션이 @RequestMapping의 POST 요청보다 우선되어 호출되게 된다.

만약 PostMapping과 GetMapping 어노테이션을 동일한 주소에 사용하고 싶다면,

메서드 이름을 변경하거나 @RequestMapping을 사용하여 요청 메서드에 상관없이 호출되도록 설정할 수 있다.

 

 


@PathVariable ( 경로변수 )

이런식으로 경로에 path를 설정함으로써 @PathVariable에 path값을 맞춰주면 사용할 수 있다.

두번째 사진과 같이 변수명을 경로 path 값과 맞춰주면 생략도 가능하다.

 

@RequestMapping과 관련된 어노테이션들로 get, post, patch, delete 들을 사용해 PathVariable 을 사용해봤다.

또한, 클래스에서 RequestMapping에 경로를 설정해주면 아레 메소드에서 생략가능하다.

728x90
반응형

댓글