이 글은 Velog에서 이전한 글입니다. Velog 원문 보기
매핑 정보
@RestController
@Slf4j
public class MappingController {
@RequestMapping("/hello-basic")
public String helloBasic() {
log.info("helloBasic");
return "ok";
}
}
@RequestController
@Controller는 반환 값이String이면View이름으로 인식된다. 그래서View를 찾고View가 랜더링 된다.@RestController는 반환 값으로View를 찾는 것이 아니라,HTTP message Body에 바로 입력한다. 따라서 실행 결과로 ok 메세지를 받을 수 있다.
HTTP Response 반환 값이 View가 아닌 특정 데이터인 경우 @ResponseBody가 필요했다. 그러나 매번 Controller에 @ResponseBody를 적용하는 것은 번거롭다.
- 그래서 등장한 것이
@RestController이다.*
@RestController = @Controller + @ResponseBody 를 의미한다.
결론:HTTP REST API개발을 할 때에는@RestController를 사용하자!
@RequestMapping("/hello-basic")
@RequestMapping{"/hello-basic", "/hello-go"}
/hello-basicURL 호출이 오면 이 메서드가 실행되도록 매핑한다.- 대부분의 속성을 배열[] 로 제공하므로 다중 설정이 가능하다.
EX){"/hello-basic", "/hello-go"}
📌 HTTP 메서드
@RequestMapping에 Method 속성으로 HTTP 메서드를 지정하지 않으면 GET, POST, PUT, DELET, HEAD 모두 허용이 된다. HTTP 메서드와 무관하게 호출된다.
✔︎ HTTP 메서드 매핑 - @RequestMapping
@RequestMapping 방식은 HTTP의 request를 method에 따라 매핑한다.
/* method 속성 지정으로 HTTP method 와 매핑 */
@RequestMapping(value = "mapping-get-v1", method = RequestMethod.GET)
public String mappingGetV1() {
log.info("mappingGetV1");
return "ok";
}
만약 여기에 POST 요청을 한다면 Spring MVC는 HTTP 405 상태코드(Method Not Allowed)를 반환한다.
✔︎ HTTP 메서드 매핑 - 축약 매핑
HTTP 메서드를 축약한 애노테이션을 사용하는 방식이다.
/**
* 편리한 출약 애노테이션
*
* @GetMapping
* @PostMapping
* @PutMapping
* @DeleteMapping
* @PatchMapping
*/
@GetMapping(value = "/mapping-get-v2")
public String mappingGetV2() {
log.info("mapping-get-v2");
return "ok";
}
HTTP 메서드를 축약한 애노테이션을 사용했더니 더욱 직관적이다. @RequestMapping에 비해 직관적이라는 장점이 있어서 권장되는 방식이다.
@GetMapping 내부

@GetMapping 내부를 보니 @RequestMapping과 method를 지정해서 사용하는 것을 볼 수 있다.
📌 다양한 옵션
✔︎ 특정 파라미터 조건 매핑 - params
/**
* 파라미터로 추가 매핑
* params="mode",
* params="!mode"
* params="mode=debug"
* params="mode!=debug" (! = )
* params = {"mode=debug","data=good"}
*/
@GetMapping(value = "/mapping-param", params = "mode=debug")
public String mappingParam() {
log.info("mappingParam");
return "ok";
}
- 특정 파라미터가 있거나 없는 조건을 추가할 수 있다.
Query String으로 넘어온 데이터에 특정parameter가 존재할 때 매핑되는 방식이다.- 실무에서 자주 사용되지는 않는다.
✔︎ 특정 헤더 조건 매핑 - headers
/**
*특정 헤더로 추가 매핑
* headers="mode",
* headers="!mode"
* headers="mode=debug"
* headers="mode!=debug" (! = )
*/
@GetMapping(value = "/mapping-header", headers = "mode=debug")
public String mappingHeader() {
log.info("mappingHeader");
return "ok";
}
- 파라미터 매핑과 비슷하지만,
HTTP header를 사용한다. HTTP request의header에 특정 값이 있을 때 매핑되는 방식이다.- 실무에서 자주 사용되지는 않는다.
✔︎ 미디어 타입 조건 매핑 - HTTP 요청 Content-Type, consume
/**
* Content-Type 헤더 기반 추가 매핑 Media Type
* consumes="application/json"
* consumes="!application/json"
* consumes="application/*"
* consumes="*\/*"
* MediaType.APPLICATION_JSON_VALUE
*/
@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
- HTTP 요청의
Content-Type헤더를 기반으로 미디어 타입으로 매핑한다. - 만약 맞지 않으면 HTTP 415 상태코드(Unsupported Media Type)을 반환한다.
예시
consumes = "text/plain"
consumes = {"text/plain", "application/*"}
consumes = MediaType.TEXT_PLAIN_VALUE
✔︎ 미디어 타입 조건 매핑 - HTTP 요청 Accept, produce
/**
* Accept 헤더 기반 Media Type * produces = "text/html"
* produces = "!text/html"
* produces = "text/*"
* produces = "*\/*"
*/
@PostMapping(value = "/mapping-produce", produces = "text/html")
public String mappingProduces() {
log.info("mappingProduces");
return "ok";
}
- HTTP 요청의
Accept헤더를 기반으로 미디어 타입으로 매핑한다. - 만약 맞지 않으면 HTTP 406 상태코드(Not Acceptable)을 반환한다.
** 출처**
김영한님의 Spring MVC 강의
예시
produces = "text/plain"
produces = {"text/plain", "application/*"}
produces = MediaType.TEXT_PLAIN_VALUE
produces = "text/plain;charset=UTF-8"
'Backend > Spring MVC' 카테고리의 다른 글
| ✏️ HTTP 요청 메세지 - 단순 텍스트 (0) | 2026.07.18 |
|---|---|
| ✏️ HTTP request 데이터 조회 (0) | 2026.07.18 |
| ✏️ Logging (0) | 2026.07.18 |
| ✏️ Spring MVC 시작하기 (0) | 2026.07.18 |
| ✏️ Front Controller 패턴, Adapter 패턴 (0) | 2026.07.18 |