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

+ Recent posts