URL 경로의 일부를 핸들러 메서드의 매개변수와 맵핑하기 위해 사용

해당하는 도메인의 특정 리소스를 식별하기 위해 사용됨

기본 사용

@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    User user = userService.findById(id);
    return ResponseEntity.ok(user);
}

/api/v1/users/1로 요청이 들어왔다면, {id}에 해당하는 숫자 1이 메서드 파라미터에 할당됨

커스텀 파라미터명으로 맵핑

일반적으로 URL 경로와 메서드 파라미터명은 일치시키는 경우가 많음 (자동 맵핑)

하지만 다르게 하고 싶다면 어노테이션에 명시 가능

@GetMapping("/users/{memberId}/posts/{articleId}")
public ResponseEntity<Post> getUserPost(
        @PathVariable("memberId") Long userId,
        @PathVariable("articleId") Long postId) {
}

이렇게 하면 memberIduserId로, articleIdpostId로 명시적 맵핑됨