반응형
@RequestMapping
@RequestMapping은 Spring Framework에서 HTTP 요청과 컨트롤러 메서드를 매핑하기 위해 사용되는 어노테이션입니다. Controller 클래스 레벨 또는 메서드 레벨에서 사용할 수 있으며, URL과 메서드를 연결합니다.
@Controller
@RequestMapping("/accounts")
public class AccountController{
@RequestMapping("/list")
public String accountList(){
return "account_list";
}
}
결과로 "account_list" 뷰를 반환합니다.
@Controller
@RequestMapping("/accounts")
public class AccountController{
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String insertAccount(){
return "account_signup";
}
}
insertAccount() 메서드를 POST 요청과 매핑하였습니다. 즉 코드는 `/accounts/signup` 로 POST 요청이 발생하면 insertAccount() 메서드가 호출됩니다.
@RequestMapping 지정 가능 속성
- value: 요청 경로(또는 패턴) 지정합니다.
- path: value 속성의 별명을 지정합니다.
- method: HTTP 메소드 값(GET,POST,PUT 등)을 지정합니다.
- params: 요청 URL의 쿼리 파라미터를 기반으로 매핑을 설정하는 데 사용되는 속성입니다.
- headers: 헤더 유무나 값을 지정합니다.
- consumes: 요청이 소비하는 미디어 타입을 지정합니다. Content-Type 헤더
- produces: 응답이 생성하는 미디어 타입을 지정합니다. Accept 헤더
- name: 매핑 정보에 임의의 이름을 지정합니다.
요청 경로 여러 개 사용
@RequestMapping({"/demo/account", "/demo2/account"})
path 변수 사용
@Controller
@RequestMapping("/accounts")
public class AccountController{
@RequestMapping("{accountId}")
public String getAccountById(@PathVariable int accountId){
// ...
return "account";
}
}
- 경로: /account/{accountId}
- @PathVariable: URL에서 경로 변수 값을 가져오기 위한 어노테이션
- /account/{accountId:[a-z0-9-]{36}} 와 같이 정규표현식도 지정 가능
params - 파라미터 기반 매핑
@RequestMapping(value = "/users", params = "role=admin")
public String getAdminUsers() {
// 관리자 권한을 가진 사용자 목록을 조회하고 처리하는 로직
return "adminUsers";
}
@RequestMapping(value = "/users", params = {"status=active", "role!=admin"})
public String getActiveNonAdminUsers() {
// 활성 상태이면서 관리자가 아닌 사용자 목록을 조회하고 처리하는 로직
return "activeNonAdminUsers";
}
요청 헤더 사용: HTTP 헤더
@RequestMapping(value="/view", headers="content-type=text/*")
@ResponseBody
...
- '헤더이름 = 값' 형식을 사용
- 위 코드는 헤더의 content-type이 text/html, text/plain 등으로 되어 있는 경우에만 매핑
Content-Type 헤더 사용
@RequestMapping(consumes="application/json")
@ResponseBody
public Account postAccount(@Validated @RequestBody Account account){
- 요청 본문의 미디어 타입을 지정
- 요청 본문에 JSON(미디어 타입: application/json)을 지정해서 접근하면 postAccount 메소드가 실행
Accept 헤더 사용
@RequestMapping(path="regist", produces="application/json")
@ResponseBody
public Account postAccount(@Validated @RequestBody Account account){
- 응답 본문의 미디어 타입을 지정한다.
- 응답 본문으로 JSON(미디어 타입: application/json)을 받을 수 있는 클라이언트가 접근하면 postAccount 메소드가 실행
반응형
'Spring Framework' 카테고리의 다른 글
Spring REST API 개념과 흐름도 (0) | 2022.09.06 |
---|---|
Spring Model 객체: 컨트롤러에서 뷰로 데이터 전달 (0) | 2022.09.06 |
Spring 스프링 MVC란? (feat. 프런트 컨트롤러 구조) (0) | 2022.09.05 |
Spring Cookie와 Session (로그인 유지 예제) (0) | 2022.09.01 |
Spring 공통적인 작업 처리를 위한 HandlerInterceptor (0) | 2022.09.01 |