본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : @RequestMapping, 요청 매핑 종류 및 사용법

by 오주현 2022. 1. 25.
반응형

@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편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.

반응형

댓글