들어가며
스프링 컨트롤러에서 파라미터를 받을 때 사용하는 @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 형태 일때 사용 가능하다.
'Spring' 카테고리의 다른 글
Spring - Mock Test Annotation & Method 정리 (0) | 2022.04.07 |
---|---|
Spring - @ExceptionHandler & @ControllerAdvice & @RestControllerAdvice (0) | 2022.03.21 |
Spring - @NotNull, @NotEmpty, @NotBlack (0) | 2022.02.13 |
Spring - @ConfigurationPropertiesScan 어노테이션 (0) | 2022.01.19 |
Spring - Transaction 정의와 Spring에서의 Transaction (0) | 2021.12.08 |
댓글