스프링 컨트롤러에서 @PathVariable 어노테이션을 사용하는 방법에 대해 설명드리겠습니다.
@PathVariable 사용법
PathVariable은 URL 경로에서 특정 부분을 추출해서 컨트롤러의 파라미터로 직접 바인딩할 때 사용됩니다.
@GetMapping("/users/{id}")
public String getUser(@PathVariable Integer id) {
return "user id=" + id;
}
/users/{id}를 /users로 사용하면 id에 null이 들어가는게 아니라 /users라는 URL로 매핑이 됩니다.
만약 해당 URL이 있다면 그 URL과 일치하는 API가 실행되고, 없다면 404 오류가 발생합니다.
Spring에 의해 PathVariable로 들어온 값을 지정된 타입으로 변환합니다.
그래서 타입에 맞지 않는 값이 들어오면 오류가 발생합니다.
@PathVariable 여러개 사용
한 URL에서 여러 값을 추출해야 할 때 @PathVariable을 여러개 사용할 수 있습니다.
@GetMapping("/classes/{classId}/students/{studentId}")
public String getStudent(@PathVariable Integer classId, @PathVariable Integer studentId) {
return "class id=" + classId + ", studentId=" + studentId;
}
@PathVariable을 여러개 사용한 결과입니다.
정규식 사용
PathVariable로 정규식을 사용해서 값을 받을 수 있습니다.
// 1~5까지 정수만 받을 수 있음
@GetMapping("/numbers/{num:[1-5]}")
public String getNumber(@PathVariable Integer num) {
return num.toString();
}
만약에 정규식과 일치하지 않으면 오류가 발생합니다.