본문 바로가기
Spring

@PathVariable & @RequestParam 어노테이션

by devLog by Ronnie's 2022. 2. 22.

들어가며


스프링 컨트롤러에서 파라미터를 받을 때 사용하는 @Pathvariable와 @RequestParam 어노테이션에 대해 정리한다.

 

@PathVariable


- Restful API URI형태로 요청을 받을 때 @PathVariable 어노테이션을 사용한다.

- http://localhost:8080/user/email/{email} 형태로 쿼리스트링 형식으로 들어오는 @RequestParam에 비해 URI가 깔끔하다

- URI에 {} 안에 있는 값을 @PathVariable의 name 값을 일치 시켜준다.

- null이나 공백값이 들어가는 parameter라면 적용하지 않는다. 

- 값에 . 이 포함되어 있으면 . 뒤로는 값이 잘려서 들어온다.

 

사용 예시


@RequestMapping(value = "/user/email/{email}", method=RequestMethod.GET)
@PathVariable("email") String email

or

@RestController
@RequestMapping(path = "/user/email")
public class UserEmailApiController {
// 메일 삭제
@DeleteMapping(path = "/{email}")
public Email deleteEmail(@PathVariable(name = "email") String email)

 

 

@RequestParam


- GET 방식으로 넘어온 URI에 쿼리스트링을 받을때 사용된다.

-  http://localhost:8080/user/emails?email=test@gmail.com 형태로 들어오는 URI

- value 에는 파라미터로 넘어오는 email을 적는다.

- 옵션 속성으로 required의 기본값은 true이며 파라미터가 반드시 넘어와야한다. 없다면 400 ERROR을 발생시킨다.

- 파라미터 값이 없는 상황을 허용할 때는 required=false를 선언해주자.

- 옵션 속성에 defaultValue를 사용하면 파라미터 값이 없을때 적용될 디폴트 값을 설정할 수 있다.

 

사용 예시


@RestController
@RequestMapping(path = "/user")
public class UserEmailApiController {
// email로 예약 내역 조회
@GetMapping(path = "/emails")
public Response<List<String>> getEmails( @RequestParam(value = "email",required = false) String email)

 

@PathVariable & @RequestParam 같이 사용하는 경우

 

- http://localhost:8080/user/{name}?email=test@gmail.com 형태 일때 사용 가능하다.

 

댓글