Study/spring

[Java] Spring Controller @PathVariable 사용법

 

스프링 컨트롤러에서 @PathVariable 어노테이션을 사용하는 방법에 대해 설명드리겠습니다.

 

@PathVariable 사용법

PathVariable은 URL 경로에서 특정 부분을 추출해서 컨트롤러의 파라미터로 직접 바인딩할 때 사용됩니다.

@GetMapping("/users/{id}")
public String getUser(@PathVariable Integer id) {
    return "user id=" + id;
}

PathVariable 사용 결과
PathVariable 사용 결과

/users/{id}를 /users로 사용하면 id에 null이 들어가는게 아니라 /users라는 URL로 매핑이 됩니다.

만약 해당 URL이 있다면 그 URL과 일치하는 API가 실행되고, 없다면 404 오류가 발생합니다. 

 

Spring에 의해 PathVariable로 들어온 값을 지정된 타입으로 변환합니다.

그래서 타입에 맞지 않는 값이 들어오면 오류가 발생합니다.

PathVariable 타입과 다를 때 오류 발생
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 사용 결과

@PathVariable을 여러개 사용한 결과입니다.

 

 

 

정규식 사용

PathVariable로 정규식을 사용해서 값을 받을 수 있습니다.

// 1~5까지 정수만 받을 수 있음
@GetMapping("/numbers/{num:[1-5]}")
public String getNumber(@PathVariable Integer num) {
    return num.toString();
}

정규식과 일치할 때
정규식과 일치할 때

만약에 정규식과 일치하지 않으면 오류가 발생합니다.

정규식과 일치하지 않을 때
정규식과 일치하지 않을 때