1. 개요
이 빠른 사용방법(예제)에서는 Spring의 @RequestParam 과 @PathVariable 어노테이션 의 차이점을 살펴 보겠습니다 .
@RequestParam 및 @PathVariable 은 모두 요청 URI에서 값을 추출하는 데 사용할 수 있지만 약간 다릅니다.
2. 쿼리 매개 변수와 URI 경로
@RequestParam 은 쿼리 문자열에서 값을 추출 하지만 @PathVariables 는 URI 경로에서 값을 추출합니다.
@GetMapping("/foos/{id}")
@ResponseBody
public String getFooById(@PathVariable String id) {
return "ID: " + id;
}
그런 다음 경로를 기반으로 매핑 할 수 있습니다.
http://localhost:8080/foos/abc
----
ID: abc
그리고 대한 @RequestParam, 그것은 것입니다 :
@GetMapping("/foos")
@ResponseBody
public String getFooByIdUsingQueryParam(@RequestParam String id) {
return "ID: " + id;
}
동일한 응답을 제공하고 다른 URI를 제공합니다.
http://localhost:8080/foos?id=abc
----
ID: abc
3. 인코딩 된 값과 정확한 값
@PathVariable 은 URI 경로에서 값을 추출 하기 때문에 인코딩되지 않습니다. 반면에 @RequestParam 은 있습니다.
이전 예제를 사용하면 ab + c 는있는 그대로 반환됩니다.
http://localhost:8080/foos/ab+c
----
ID: ab+c
그러나 @RequestParam 요청의 경우 매개 변수는 URL 디코딩됩니다.
http://localhost:8080/foos?id=ab+c
----
ID: ab c
4. 옵션 값
두 @RequestParam 및 @PathVariable은 선택 사항이 될 수 있습니다.
Spring 4.3.3부터 필수 속성 을 사용하여 @PathVariable을 선택적으로 만들 수 있습니다 .
@GetMapping({"/myfoos/optional", "/myfoos/optional/{id}"})
@ResponseBody
public String getFooByOptionalId(@PathVariable(required = false) String id){
return "ID: " + id;
}
그러면 다음 중 하나를 수행 할 수 있습니다.
http://localhost:8080/myfoos/optional/abc
----
ID: abc
또는:
http://localhost:8080/myfoos/optional
----
ID: null
들어 @RequestParam , 우리는 또한 사용할 수 있습니다 필요한 속성을.
주의 할 때 우리가주의해야 @PathVariable 경로에 피하기 충돌, 옵션을.
5. 결론
이 기사에서는 @RequestParam 과 @PathVariable 의 차이점을 배웠습니다 .
예제의 전체 소스 코드는 GitHub 에서 찾을 수 있습니다 .
- https://docs.spring.io/spring-framework/docs/current/reference/html
- https://www.baeldung.com/spring-requestparam-vs-pathvariable
'Java' 카테고리의 다른 글
Spring에서 지원되지 않는 요청 방법 (405) (0) | 2021.04.17 |
---|---|
Spring @RequestParam 어노테이션 (0) | 2021.04.17 |
Spring Boot로 Hikari 연결 풀 구성 (0) | 2021.04.16 |
JUnit5 @RunWith (0) | 2021.04.16 |
Java에서 숫자를 N 소수 자릿수로 반올림하는 방법 (0) | 2021.04.16 |