1. @RequestMapping

- 요청 정보를 매핑한다.

- 핸들러 매핑에서 컨트롤러를 선택할 때 사용하는 애노테이션이다.

- URL 뿐만 아니라 메서드, 파라미터, 헤더 등 더욱 넓은 범위를 세분화하여 적용할 수 있다.

- 설정된 URL이 호출되면 해당 메서드가 호출된다. 애노테이션 기반으로 동작하기 때문에 임의로 메서드 이름을 지을 수 있다.

- 클래스 레벨의 @RequestMapping을 기준으로, 메서드 레벨의 @RequestMapping으로 세분화 한다.

 

1.1 String[] value

- URL 패턴을 지정한다.

- String 배열로 여러 개를 지정할 수 있다.

@RequestMapping(value="/test")
@RequestMapping(value="/test/{testId}")
@RequestMapping(value={"/test1", "/test2", "/test3"})
@RequestMapping(value="/test.*")
@RequestMapping(value="/test/**/tt")

 

1.2 RequestMethod[] method

- HTTP 메서드를 정의한 ENUM이다.

- GET, POST, PUT, DELETE, OPTIONS, TRACE, PATCH로 총 7개의 HTTP 메서드가 정의되어 있다.

- 메서드를 명시하면 같은 URL이라도 다른 메서드로 매핑할 수 있다.

@RequestMapping(value="/test", method=RequestMethod.GET)
@RequestMapping(value="/test", method=RequestMethod.POST)

 

1.2.1 method 생략

- @PostMapping, @GetMapping, @PutMapping, @DeleteMapping, @PatchMapping 애노테이션을 이용해 메서드 매핑을 축약시킬 수 있다. 각 애노테이션은 내부에 @RequestMapping 애노테이션을 가지고 있다.

 

1.3 String[] params

- 요청 파라미터와 값으로 구분한다.

// /test?use=y일 경우 호출
@RequestMapping(value="/test", params="use=y")

// /test?use=y가 아닐 경우 호출
@RequestMapping(value="/test", params="use!=y")

// 파라미터에 use가 있을 경우 호출
@RequestMapping(value="/test", params="use")

// 파라미터에 use가 없을 경우 호출
@RequestMapping(value="/test", params="!use")

 

1.4 String[] headers

- 헤더 값으로 구분한다.

@RequestMapping(value="/test", headers="content-type=text/*")

 

1.5 String[] consumes

- HTTP 요청의 Content-Type 헤더를 기반으로 미디어 타입으로 매핑한다.

- 만약 맞지 않으면 HTTP 415 상태코드(Unsupported Media Type)를 반환한다.

@RequestMapping(value="/test", consumes="text/plain")
@RequestMapping(value="/test", consumes={"text/plain", "application/*"})
@RequestMapping(value="/test", consumes=MediaType.TEXT_PLAIN_VALUE)

 

1.6 String[] produces

- HTTP 요청의 Accept 헤더를 기반으로 미디어 타입으로 매핑한다.

- 만약 맞지 않으면 HTTP 406 상태코드(Not Acceptable)를 반환한다.

@RequestMapping(value="/test", produces="text/plain")
@RequestMapping(value="/test", produces={"text/plain", "application/*"})
@RequestMapping(value="/test", produces=MediaType.TEXT_PLAIN_VALUE)
@RequestMapping(value="/test", produces="text/plain;charset=UTF-8")

 

참고

- https://joont92.github.io/spring/@RequestMapping/

- 『스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술』

'Spring' 카테고리의 다른 글

Controller method parameter types  (0) 2021.11.12
@Controller, @RestController 차이점  (0) 2021.11.12
Logging  (0) 2021.11.11
DispatcherServlet  (0) 2021.11.08
Bean Scope  (0) 2021.10.16