[Spring MVC] 요청 매핑
요청 매핑
MappingController
@RestController
public class MappingController {
private Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/hello-basic")
public String helloBasic() {
log.info("helloBasic");
return "ok";
}
}
@RequestMapping("/hello-basic")
/hello-basic
URL이 호출되면 메서드가 실행되도록 매핑.- 대부분의 속성을 배열로 제공하므로 다중 설정이 가능.
{"/hello-basic", "/hello-hi"}
둘 다 허용
다른 URL이지만, 스프링은 URL 요청들을 같은 요청으로 매핑한다.
- 매핑:
/hello-basic
- URL 요청:
/hello-basic
,/hello-basic/
PathVariable 사용
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {
log.info("mappingPath userId={}", data);
return "ok";
}
RequestMapping
은 URL 경로를 템플릿화 할 수 있는데,@PathVariable
을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다.@PathVariable
의 이름과 파리미터 이름이 같으면 생략 가능.public String mappingPath(@PathVariable String userId) {
미디어 타입 조건 매핑
Content-Type, consume
@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
HTTP 요청의 Content_Type 헤더를 기반으로 미디어 타입으로 매핑.
consumes = “text/plain”
consumes = {“text/plain”, “application/*”}
consumes = MediaType.TEXT_PLAIN_VALUE
Accept, produce
@PostMapping(value = "/mapping-produce", produces = "text/html")
public String mappingProduces() {
log.info("mappingProduces");
return "ok";
}
HTTP 요청의 Accept 헤더를 기반으로 미디어 타입으로 매핑.
produces = “text/plain”
produces = {“text/plain”, “application/*”}
produces = MediaType.TEXT_PLAIN_VALUE
produces = “text/plain;charset=UTF-8”
요청 매핑 - API 예시
회원 관리 API
- 회원 목록 조회: GET
/users
- 회원 등록: POST
/users
- 회원 조회: GET
/users/{userId}
- 회원 수정: PATCH
/users/{userId}
- 회원 삭제: DELETE
/users/{userId}
MappingClassController
@RestController
@RequestMapping("/mapping/users")
public class MappingClassController {
@GetMapping
public String users() {
return "get users";
}
@PostMapping
public String addUser() {
return "post user";
}
@GetMapping("/{userId}")
public String findUser(@PathVariable String userId) {
return "get userId=" + userId;
}
@PatchMapping("/{userId}")
public String updateUser(@PathVariable String userId) {
return "update userId=" + userId;
}
@DeleteMapping("/{userId}")
public String deleteUser(@PathVariable String userId) {
return "delete userId=" + userId;
}
}
댓글남기기