반응형
@RestController
public class MappingController {
private Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/hello-basic")
public String helloBasic() {
log.info("helloBasic");
return "ok";
}
}
@RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메시지 바디에 바로 입력한다고 한다. 따라서 실행 결과를 바로 OK로 받을 수 있다.
@RequestMapping(”/hello-basic”)은 /hello-basic URL 호출이 오면 이 메서드가 실행이 되도록 한다. 배열을 통해 다중 설정도 가능하다.
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
위와 같은 HTTP 메서드를 축약한 어노테이션을 사용하는 것이 더 직관적으로 사용이 가능하다. 이렇게 사용하지 않으려면 @RequestMapping과 method를 지정해서 사용하는 것을 확인할 수 있다.
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {
log.info("mappingPath userId={}", data);
return "ok";
}
이게 최근 방식이라고 한다. 최근 HTTP API에서는 리소스 경로에 식별자를 넣는 방식을 선호한다고 한다.
URL 경로에 /mapping/userA라고 입력하고 userId를 따로 빼보면 userA가 오는 식이다.
@GetMapping(value = "/mapping-header", headers = "mode=debug")
public String mappingHeader() {
log.info("mappingHeader");
return "ok";
}
특정 헤더로 매핑을 하는 방식이다.
@PostMapping(value = "/mapping-consume", consumes = "application/json")
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
미디어 타입 조건 매핑이다. HTTP 요청의 Content-Type 헤더를 기반으로 미디어 타입으로 매핑을 하는데 맞지 않으면 HTTP 415 상태 코드를 반환한다. 조금 더 다듬어서 사용할 수도 있는데 아래와 같다.
@PostMapping(value = "/mapping-consume", consumes = MediaType.APPLICATION_PROBLEM_JSON_VALUE)
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
MediaType.APPLICATION_PROBLEM_JSON_VALUE에 들어가 보면 application/json이 정의되어 있다. 가능하면 아래와 같이 사용하는 게 더 좋다고 한다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : HTTP 요청 기본, 헤더 조회 (0) | 2022.01.25 |
---|---|
[Spring Boot] : 요청 매핑 API 예시 (0) | 2022.01.25 |
[Spring Boot] : Spring Boot Log 사용하기 , Lombok 라이브러리 로그 (0) | 2022.01.25 |
[SpringBoot] : Spring Boot Jar 프로젝트 생성 (0) | 2022.01.25 |
[Spring Boot] : Spring MVC 실용적인 방식 활용 (0) | 2022.01.24 |
댓글