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 |