Spring - Pathvariable

vector·2021년 8월 23일
0

Study

목록 보기
2/29

@Controller에서 파라미터를 받는 방법- 출처

  1. /API_NAME?key1=val1
  2. /API_NAME/{value1}

2번 방식으로 파라미터를 받을때 필요한 것이 @Pathvariable 어노테이션!

	@GetMapping("/test/{cnt}")
	public String methodName(@PathVariable int cnt){
  	// TODO..

  	return "test";
	}

위의 코드에서 "localhost:8080/test/3"과 같이 호출했을 때 cnt 값이 3이 된다.
하지만, 만약에 "localhost:8080/test"와 같이 변수를 넣어주지 않으면 에러가 발생한다.

이럴 때는 아래와 같이 처리할 수 있다.

	@GetMapping(value = {"/test/{cnt}", "/test"})
	public String methodName(@PathVariable int cnt){
  	// TODO..

  	return "test";
}

위와 같이 만들면, "localhost:8080/test"처럼 호출해도 에러는 나지 않는다.

위 코드처럼 작성했던 이유는 value를 추가해서 PathVariable의 기본값을 설정하고 싶었던 의도였는데, 작성하고 제대로 cnt에 값이 안 들어오면 에러가 난다.
그때는 파라미터의 속성을 "required = false"로 설정해주고, null이 들어왔을 때 기본값을 설정해준다.

	@GetMapping(value = {"/test/{cnt}", "/test"})
	public String methodName(@PathVariable(required = false) Integer cnt){
  		if(cnt == null)
    		cnt = 1;
        
  	// TODO..

  return "test";
}

또는 Optional을 이용해서 처리할 수 있다.

	@GetMapping(value = {"/test/{cnt}", "/test"})
	public String methodName(@PathVariable(required = false) Optional<Integer> cnt){
  	int num = Optional.orElse(1);
        
  	// TODO..

  	return "test";
	}
profile
개발 공부중인 학생 입니다😄

0개의 댓글