-
특정 조건 매핑스프링/스프링 MVC 패턴 2023. 2. 14. 12:34
저번에 @GetMapping, @PostMapping 등의 요청사항을 알아보았는데 이번에는 이런 요청들을 사용할 때 추가적으로 필요한 기능들을 공부할 것이다.
@PathVaribale의 사용
@GetMapping("/mapping/{userId}") public String mappingPath(@PathVariable("userId") String data) { log.info("mappingPath userId={}", data); return "ok"; }
위와 같이 url에 파라미터를 넣을 수 있다.
userId라는 변수를 만들어서 url에 userId 변수 값이 넘어오면 로그에 출력해주는 방식이다.
@PathVariable을 사용한 경로변수를 통해서 원하는 리소스 경로에 식별자를 넣어주는 방식을 요즘 많이 사용한다.
PathVariable의 다중 사용
@GetMapping("/mapping/users/{userId}/orders/{orderId}") public String mappingPath(@PathVariable String userId, @PathVariable Long orderId) { log.info("mappingPath userId={}, orderId={}", userId, orderId); return "ok"; }
위와 같이 변수를 2개 넣어주면 다중 사용이 가능해진다.
만약 http://localhost:8080/mapping/users/userA/orders/100와 같은 url을 입력했으면 userId = userA, orderID = 100 이라는 로그가 출력 될 것이다. (웹 사이트에는 ok가 뜨고 콘솔 창에 로그로 출력)
특정 파라미터 조건 매핑
@GetMapping(value = "/mapping-param", params = "mode=debug") public String mappingParam() { log.info("mappingParam"); return "ok"; }
value는 url정보이고, params는 파라미터 정보이다. url을 입력할 때 url 정보뿐만 아니라 파라미터 정보도 같이 입력해야한다. http://localhost:8080/mapping-param?mode=debug처럼 무조건 mode=debug를 넣어줘야지 된다.
잘 사용하지는 않고 위와 같은 조건변수를 훨씬 많이 사용
특정 헤더 조건 매핑
@GetMapping(value = "/mapping-header", headers = "mode=debug") public String mappingHeader() { log.info("mappingHeader"); return "ok"; }
url 파라미터가 아닌 특정 헤더가 있어야지 매핑되는 조건이다.
포스트맨을 이용해서 헤더의 key값에 mode를, value값에 debug를 추가해서 실행했을 때의 결과이다.
만약에 헤더를 추가하지 않는다면 실행되지 않는다.
미디어 타입 조건 매핑
@PostMapping(value = "/mapping-consume", consumes = "application/json") public String mappingConsumes() { log.info("mappingConsumes"); return "ok"; }
Content-type이 무조건 json이어야지 실행되는 조건이다.
json 타입이 아니라면 오류가 나서 실행되지 않는다.
'스프링 > 스프링 MVC 패턴' 카테고리의 다른 글
요청 파라미터 - @RequestParam, @ModelAttribute (0) 2023.02.14 API 요청 매핑 타입 (0) 2023.02.14 로그 출력 (0) 2023.02.13 스프링 MVC (0) 2023.02.12 view resolver (0) 2023.02.12