요청 매핑
2개 이상의 요청 매핑
@RequestMapping(value = {"/hello-basic", "hello-go"}, method = RequestMethod.GET)
public String helloBasic() {
log.info("helloBasic");
return "OK";
}
- value 안에 {}로 담으면 된다 (배열 선언 형식)
method 생략 매핑
@GetMapping(value = "/mapping-get-v2")
public String helloBasicV2() {
log.info("helloBasicV2");
return "OK";
}
- method를 지정해주지 않으면 모든 메서드로 들어오는 요청을 전부 처리한다.
- GetMapping 이라고 선언해주면 method를 따로 작성해주지 않아도 Get 메서드만 처리한다.
- 이외에도 PostMapping, DeleteMapping, PutMapping, PatchMapping 가있다.
⭐️ PathVariable(경로 변수) 사용
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {
log.info("mappingPath userId={}", data);
return "OK";
}
- 최근 HTTP API는 리소스 경로에 식별자를 넣는 스타일을 선호한다.
- @RequestMapping은 URL 경로를 템플릿 화 할 수 있는데, @PathVariable을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다.
- @PathVariable의 이름과 파라미터 이름이 같으면 생략할 수 있다.
- (@PathVariable String userId)
PathVariable 다중 사용
@GetMapping("/mapping/users/{userId}/orders/{orderId}")
public String mappingPath(@PathVariable String userId, @PathVariable String orderId) {
log.info("mappingPath userId = {}, orderId = {}", userId, orderId);
return "OK";
}
특정 파라미터 조건 매핑 (거의 사용X)
@GetMapping(value = "/mapping-param", params = "mode=debug")
public String mappingParam() {
log.info("mappingParam");
return "OK";
}
- 파라미터로 해당 정보가 넘어와야지만 요청을 처리한다.
특정 헤더 조건 매핑
@GetMapping(value = "/mapping-param", headers = "mode=debug")
public String mappingHeaders() {
log.info("mappingHeaders");
return "OK";
}
- 헤더로 해당 정보가 넘어와야 요청을 처리한다.
미디어 타입 조건 매핑
@PostMapping(value = "/mapping-consume", consumes = MediaType.APPLICATION_JSON_VALUE)
public String mappingConsumes() {
log.info("mappingConsumes");
return "OK";
}
- HTTP 요청의 Content-Type 헤더를 기반으로 미디어 타입으로 매핑한다.
- 만약 맞지 않으면 HTTP 상태코드 415(Unsupported Media Type)을 반환한다.
@PostMapping(value = "/mapping-produce", produces = MediaType.TEXT_HTML_VALUE)
public String mappingProduces() {
log.info("mappingProduces");
return "OK";
}
- HTTP 요청의 Accept 헤더를 기반으로 미디어 타입으로 매핑한다.
- 만악 맞지 않으면 HTTP 406 상태코드 (Not Acceptable)을 반환한다.