728x90
Query Parameter, URI Path로 구분
@RequestParam과 @PathVariable은 모두 request URI를 처리할 때 사용한다.
QueryParameter, URI Path로 구분할 수 있는데
QueryParameter인 경우에는 @RequestParams를 사용하고,
URI Path인 경우에는 @PathVariable를 사용한다.
@GetMapping("/foos/{id}")
@ResponseBody
public String getFooById(@PathVariable String id) {
return "ID: " + id;
}
http://localhost:8080/spring-mvc-basics/foos/abc
---
ID: abc
@GetMapping("/foos")
@ResponseBody
public String getFooByIdUsingQueryParam(@RequestParam String id) {
return "ID: " + id;
}
http://localhost:8080/spring-mvc-basics/foos?id=abc
---
ID: abc
Encoded
@PathVariable은 정확한 값을 받아올 수 있다. 하지만 @RequestParam은 encode 된다.
http://localhost:8080/spring-mvc-basics/foos/ab+c
---
ID: ab+c
http://localhost:8080/spring-mvc-basics/foos?id=ab+c
---
ID: ab c
Optional
@PathVariable과 @RequestParam 모두 optional로 사용 가능하다.
Spring 4.3.3부터 다음과 같이 사용 가능하다.
@GetMapping({"/myfoos/optional", "/myfoos/optional/{id}"})
@ResponseBody
public String getFooByOptionalId(@PathVariable(required = false) String id) {
return "ID: " + id;
}
http://localhost:8080/spring-mvc-basics/myfoos/optional/abc
---
ID: abc
http://localhost:8080/spring-mvc-basics/myfoos/optional
---
ID: null
Reference
https://www.baeldung.com/spring-requestparam-vs-pathvariable
728x90
'Spring' 카테고리의 다른 글
Builder 패턴 (0) | 2022.09.02 |
---|---|
ResponseEntity (0) | 2022.09.02 |
Exception 공부 (0) | 2022.08.31 |
RestTemplate, WebClient (0) | 2022.08.24 |
HttpClient, HttpEntity (0) | 2022.08.18 |