@PathVariable

Yuno·2024년 8월 18일
0

Spring Framework 에서 URL 경로의 일부를 메소드 파라미터로 매핑할 때 사용되는 어노테이션.
RESTful 웹 서비스에서 자원 식별자와 같은 값을 URL 경로에서 추출할 때 자주 사용됨


👉 기본 사용법

예를 들어, 다음과 같은 URL 요청이 있을 때

GET /users/123

이 요청에서 123 이라는 값은 users 라는 자원에 대한 식별자(ID)로 간주됨. 이 값을 컨트롤러 메소드에서 받아 처리하려면 @PathVariable 을 사용할 수 있음


@RestController
public class UserController {
	
    @GetMapping("/users/{id}")
    public String getUserById(@PathVariable("id") String userId) {
    	return "User ID: " + userId;
    }
}

@PathVariable("id") 어노테이션을 사용하여 URL 경로의 {id} 부분을 메소드 파라미터 userId 에 매핑함


👉 주요 속성

  1. name(또는 value)
  • URL 경로에서 추출할 변수의 이름을 지정함. 메소드 파라미터의 이름과 일치하지 않을 경우 이 속성을 명시적으로 설정할 수 있음
  • @PathVariable("id") 는 URL 경로에서 id 라는 부분을 추출하여 메소드 파라미터에 전달함
  1. required
  • 해당 변수가 필수인지 여부를 지정. 기본값은 true 이며, URL에 해당 변수가 포함되지 않으면 오류가 발생
  • required = false 로 설정하면 해당 변수가 없어도 에러가 발생하지 않음

기본적인 사용

@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") String userId) {
	return "User ID: " +userId;
}

여기서, /users/123 요청이 오면, userId"123" 이 됨


여러 개의 Path Variables 사용

@GetMapping("/users/{userId}/orders/{orderId}")
public String getUserOrder(@PathVariable("userId") String userId, @PathVariable("orderId") String orderId) {
	return "User ID: " + userId + ". Order ID: " + orderId;
}

/users/123/orders/456 요청이 오면, userId"123", orderId"456" 이 됨


👉 파라미터 이름 생략

만약 메소드 파라미터 이름이 @PathVariable 에서 지정한 이름과 동일하다면, 속성 이름을 생략할 수 있음

@GetMapping("/users/{id}")
public String getUserById(@PathVariable String id) {
	return "User ID: " + id;
}

@PathVariable 의 필수 여부 설정

@GetMapping("users/{id}")
public String getUserById(@PathVariable(name = "id", required = false) String userId) {
	if (userId == null) {
    	return "User ID is not provided";
    }
    return "User ID: " + userId;
}

required = false 로 설정하면 id 가 없을때 userIdnull 이 됨

profile
Hello World

0개의 댓글