ToBe끝판왕

[ SPRING ] 어노테이션 @PathVariable 과 @RequestParam 본문

■ 프로그래밍 SKILLS/SPRING FRAMEWORK

[ SPRING ] 어노테이션 @PathVariable 과 @RequestParam

업그레이드중 2024. 5. 22. 02:33
반응형




 

@PathVariable 어노테이션

 

 

▶  정의

•   SpringFramework 에서 자주 사용되는 어노테이션

•   URL 경로에 포함된 변수를 메서드 매개변수로 바인딩 할때 사용

 

 

▶  @PathVariable  예시

•   아래의 Java 소스와 같이 Controller 에서 학생이름을 기준으로 학생정보를 삭제하는 요청을 처리

•   URL의 {stuName} 을 @PathVariable String stuName 으로 매핑

•   따라서, HTTP DELETE 메서드로 student/홍길동 요청이 오면 stuName 매개변수는 "홍길동" 값을 가지게 된다.

 

@ResponseBody
@RequestMapping(value = "student/{stuName}", method = RequestMethod.DELETE)
public Map<String,String> crudDelete(@PathVariable String stuName) throws Exception {

	int resultCnt = crudApiService.deleteApiData(stuName);	
    
 }

 

 

 

▶  @PathVariable 속성

•   'value' 속성을 사용하여 URL 경로 변수와 메서드의 매개변수 이름이 다를 경우, 아래와 같이 처리할 수 있다.

 

@ResponseBody
@RequestMapping(value = "student/{name}", method = RequestMethod.DELETE)
public Map<String,String> crudDelete(@PathVariable("name") String stuName) throws Exception {

	int resultCnt = crudApiService.deleteApiData(stuName);	
    
 }

 

 

 

•   'required' 속성을 사용하여 변수값이 필수 여부 설정 가능 ( default 는 true 이다. )

 

@ResponseBody
@RequestMapping(value = "student/{name}", method = RequestMethod.DELETE)
public Map<String,String> crudDelete(@PathVariable(value="name", required=false) String stuName) throws Exception {

	int resultCnt = crudApiService.deleteApiData(stuName);	
    
 }

 

 

 


 

 

@RequestParam 어노테이션

 

 

▶  정의

•   SpringFramework 에서 자주 사용되는 어노테이션

•   URL 경로에 포함된 변수를 메서드 매개변수로 바인딩 할때 사용

•   주로 HTTP GET / POST 요청의 쿼리파라미터를 처리할때 주로 사용

 

 

▶  @RequestParam  예시

•   아래의 Java 소스와 같이 Controller 에서 학생이름을 기준으로 학생정보를 조회하는 요청을 처리

•   stuName을 매개변수로 사용한다고 하면 'student?stuName=홍길동' 와 같이 쿼리스트링을 통해 전달된다.

•   따라서, HTTP GET 메서드로 'student?stuName=홍길동' 요청이 오면 stuName 매개변수는 "홍길동" 값을 가지게 된다.

 

@ResponseBody
@RequestMapping(value = "student", method = RequestMethod.GET)
public List<CrudApiDto> crudSelect(@RequestParam(value = "stuName", required = false)String stuName) throws Exception {

	if( stuName != null ) {
		return crudApiService.selectApiListByName(stuName);
    }
		return crudApiService.selectApiList();
    }

 

 

 

▶  @RequestParm 속성

•   @PathVariable 속성과 기본적으로 사용방법이 동일하다.

•   default 속성도 가지고 있다. ( 요청 파라미터가 제공되지 않은 경우, 해당 defaultValue 값을 기본값으로 사용 )

 

@ResponseBody
@RequestMapping(value = "student", method = RequestMethod.GET)
public List<CrudApiDto> crudSelect(@RequestParam(value = "stuName", required = false, 
defaultValue = "김영수" )String stuName) throws Exception {

	if( stuName != null ) {
		return crudApiService.selectApiListByName(stuName);
    }
		return crudApiService.selectApiList();
    }

 

 


 

 

결론

 

 

▶  공통점

•   데이터를 전달하기 위해 URI을 통해 전달된 값을 파라미터로 받아오는 역할

 

 

▶  차이점

•  쿼리스트링( ex : student?stuName=홍길동 ) 을 통해 데이터를 받아오는 경우에는  @RequestParam 사용

•  URI Path( student/{stuName} )을 통해 데이터를 받아오는 경우에는 @PathVariable 사용 

•  defaultValue 값이 필요한 경우에는 @RequestParam 사용

•  1개의 필수값이 필요한 경우에는 @PathVariable 사용

 

 

▶ 두가지를 혼용해서 사용하는 경우도 많으니 각가의 특징과 사용법 명심할 것 !

 

 

 

 

 

 

반응형
Comments