Java JPA를 사용하다 보면 api를 사용할 경우가 많은데 Controller 단에 @GetMapping을 사용하여 원하는 DB를 조회할 수 있는 방법이 여러가지가 있다는 것을 깨닳았다.
(사실 본인은 2개만 사용해서 더 있는지 모름)
해당 방법은 클라이언트가 서버에 데이터를 전달하는데 사용한다.
대표적으로 @RequestParam와 @PathVariable가 있는데 각각의 사용법과 사용하는 경우 그리고 장단점을 알아보자!!
@RequestParam
@GetMapping(value = "test")
public Long testParam(@RequestParam("id") Long Id {
return... ;
}
defaultValue - 값이 설정되지 않을 때 기본으로 설정할 값
name - 바인딩할 요청 파라미터의 이름
value - name의 별칭
required - 필수 값인지 설정하는 값
ex) @RequestParam(value = "id", name = "realId", defaulValue = "0", required = true)
해석)
realId 라는 파라미터 이름으로 조회
들어오는 파라미터 값은 id에 할당
value 값이 없다면 default 값으로 0 할당
id라는 값은 필수적으로 입력
http://localhost:8080/test?id=1
url 뒤에 ? (@RequestParam("xx")에 들어가는 파라미터 key) = (조회 할 파라미터 value)
해당 value는 Long id로 읽힌다.
@PathVariable
@GetMapping(value = "test/{id}")
public Long testVariable(@PathVariable Long id) {
return... ;
}
http://localhost:8080/test/1
url 뒤에 조회할 value 값만 기재 { } 안에 들어가는게 Long id로 읽힌다.
@RequestParam, @PathVariable 2개 복합 사용
@GetMapping("/test/{id}")
public Long testCombo(
@PathVariable Long id,
@RequestParam(value = "MyId", required=false) Long myId) {
return... ;
}
/test/123?myId=1
@PathVariable를 사용하여 입력받은 파라미터 값이 123인 Long id 조회해서 데이터를 추출하고
그 중에서
@RequestParam을 사용하여 myId에 입력받은 파라미터 값이 1인 Long myId 조회해서 최종 추출
정리
@RequestParam -> value 파라미터 key 값을 주면 value 값은 ?key=x 로 요청
@PathValiable -> value 파라미터를 설정하면 url에 직접 파라미터 value 값 넣기 /{value}