์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- well known ํฌํธ
- ํ๋ก์ด๋์์
- IEEE 802
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- i-type
- ์ค๋ ๋
- til
- git merge
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ์ค๋น
- xv6
- tcp ํ๋กํ ์ฝ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- 99ํด๋ฝ
- ๋ฐ์ดํฐ ์ ์ก
- ์ฃผ๊ธฐ์ ํธ
- ๋น์ฃผ๊ธฐ์ ํธ
- ์์๋ฒํธ
- ์ค๋ฅ์ ์ด
- ํ๋ ์ ๊ตฌ์กฐ
- ์ค๋ฅ๊ฒ์ถ
- leetcode
- ์ค๋ธ์
- ๊ฐ๋ฐ์์ทจ์
- reducible
- ํ ํฐ ๋ฒ์ค
- tcp ์ธ๊ทธ๋จผํธ
- ํญํด99
- mariadb
- ์ฐ๋ถํฌdb
- Today
- Total
Unfazedโ๏ธ๐ฏ
Spring @RequestParam vs @PathVariable ์ ๋ ธํ ์ด์ ๋น๊ต ๋ณธ๋ฌธ
@PathVariable
- ๋ชฉ์ : URI ๊ฒฝ๋ก์ ๋ณ์ ๊ฐ์ ์ถ์ถํ ๋ ์ฌ์ฉ
- ์์: /users/{userId} → userId ํ๋ผ๋ฏธํฐ ์ถ์ถ
- ํน์ง:
- URL์ ๊ฒฝ๋ก ์ผ๋ถ๋ก ์ฌ์ฉ๋๋ฉฐ ํ์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋จ
- RESTful ๋ฆฌ์์ค ์๋ณ์ ์ ํฉ (์: ํน์ ์ฌ์ฉ์ ์กฐํ)
@GetMapping("/users/{userId}")
public User getUser(@PathVariable String userId) {
//
}
@RequestParam
- ๋ชฉ์ : ์ฟผ๋ฆฌ ์คํธ๋ง(?key=value)์ ํ๋ผ๋ฏธํฐ ์ถ์ถ
- ์์: /users?role=admin → role ๊ฐ ์ถ์ถ
- ํน์ง:
- ์ ํ์ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ (required=false)
- ํํฐ๋ง, ์ ๋ ฌ, ํ์ด์ง ๋ฑ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ํฉ
@GetMapping("/users")
public List<User> getUsers(@RequestParam(required = false) String role) {
//
}
์์ฒญ ๊ฐ์ ์ฒ๋ฆฌ ์ ์ธ์ฝ๋ฉ ๋ฐฉ์ ์ฐจ์ด
@PathVariable
URL ๊ฒฝ๋ก์์ ๊ฐ์ ์ถ์ถํ ๋ ์ธ์ฝ๋ฉ๋์ง ์์ ์๋ณธ ๊ฐ์ ๊ทธ๋๋ก ๊ฐ์ ธ์จ๋ค. ์๋ฅผ ๋ค์ด, URL์ ab+c๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ๊ทธ๋๋ก ab+c๋ฅผ ๋ฐํํ๋ค.
- http://localhost:8080/spring-mvc-basics/foos/ab+c
- ๊ฒฐ๊ณผ: ID: ab+c
@RequestParam:
์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฒฝ์ฐ, URL ๋์ฝ๋ฉ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ab+c๊ฐ ab c๋ก ๋ณํ๋์ด ๋ฐํ๋๋ค.
- http://localhost:8080/spring-mvc-basics/foos?id=ab+c
- ๊ฒฐ๊ณผ: ID: ab c
๋ฐ๋ผ์, ์ธ์ฝ๋ฉ ์ด์๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์์๋ ์ด๋ค ์ ๋ ธํ ์ด์ ์ ์ฌ์ฉํ ์ง ์ ์คํ ์ ํํด์ผ ํ๋ค.
์ ํ์ ๊ฐ ์ฒ๋ฆฌ
๋ ์ ๋ ธํ ์ด์ ๋ชจ๋ ์ ํ์ (optional) ๊ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- @PathVariable์ ์ ํ์ ์ฌ์ฉ
Spring 4.3.3๋ถํฐ๋ required ์์ฑ์ ์ฌ์ฉํ์ฌ ์ ํ์ ๊ฒฝ๋ก ๋ณ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
@GetMapping({"/myfoos/optional", "/myfoos/optional/{id}"})
@ResponseBody
public String getFooByOptionalId(@PathVariable(required = false) String id){
return "ID: " + id;
}
- ํธ์ถ ์์
- URL: http://localhost:8080/spring-mvc-basics/myfoos/optional/abc → ๊ฒฐ๊ณผ: ID: abc
- URL: http://localhost:8080/spring-mvc-basics/myfoos/optional → ๊ฒฐ๊ณผ: ID: null
- @RequestParam์ ์ ํ์ ์ฌ์ฉ
@RequestParam ๋ํ required ์์ฑ์ ์ฌ์ฉํ์ฌ ํ์ ์ฌ๋ถ๋ฅผ ์ง์ ํ ์ ์๋ค.๋จ, ๊ฒฝ๋ก์์ ์๊ธธ ์ ์๋ ์ถฉ๋์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์์ ๊ณ ๋ ค์ฌํญ์ ์ฃผ์ํด์ผ ํ๋ค.
์ ํ์ ๊ฐ ์ฒ๋ฆฌ๋ ์ ์ฐํ API ์ค๊ณ์ ๋์์ ์ฃผ์ง๋ง, ๊ฒฝ๋ก ์ถฉ๋์ด๋ ๋ฐ์ดํฐ ๋๋ฝ ์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ๋ํด ์ถฉ๋ถํ ๊ฒ์ฆ์ด ํ์ํ๋ค.
์ฃผ์ ์ฐจ์ด์ ๋น๊ต
ํน์ฑ | @PathVariable | @RequestParam |
์์น | URI ๊ฒฝ๋ก ๋ด (/{value}) | ์ฟผ๋ฆฌ ์คํธ๋ง (?key=value) |
ํ์ ์ฌ๋ถ | ๊ธฐ๋ณธ๊ฐ required=true | required=false๋ก ์ ํ์ ์ค์ ๊ฐ๋ฅ |
์ฌ์ฉ ์ฌ๋ก | ๋ฆฌ์์ค ์๋ณ (์: ID ๊ธฐ๋ฐ ์กฐํ) | ํํฐ๋ง, ์ ๋ ฌ, ๊ฒ์ ์กฐ๊ฑด |
URL ๊ตฌ์กฐ | RESTful ๊ณ์ธต ๊ตฌ์กฐ ๋ฐ์ | ๊ธฐ๋ฅ์ ํ๋ผ๋ฏธํฐ ์ ๋ฌ |
์ธ์ฝ๋ฉ | ๊ฐ์ด ๋์ฝ๋ฉ๋์ง ์์(์:ab+c→ab+c) | ๊ฐ์ด ์๋ ๋์ฝ๋ฉ ๋จ(์:ab+c→ab c) |
์ ๋ฆฌ
@PathVariable๊ณผ @RequestParam์ ๊ฐ๊ฐ์ ํน์ง์ ๋ง์ถฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋๊ตฌ์ด๋ค.
- @PathVariable์ URI ๊ฒฝ๋ก ์์ฒด์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ด RESTful API ์ค๊ณ ์ ์์ฐ์ค๋ฌ์ด URL ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค.
- @RequestParam์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ๋ ์ ์ฉํ๋ฉฐ, URL ๋์ฝ๋ฉ ์ฒ๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ์ธ์ฝ๋ฉ ์ด์๊ฐ ์ฐ๋ ค๋๋ ๊ฒฝ์ฐ(์: ๊ฐ์ +๋ ๊ณต๋ฐฑ ๋ฑ์ ํน์๋ฌธ์๊ฐ ํฌํจ๋์ด ์๋ณธ ๊ทธ๋๋ก์ ๊ฐ์ด ํ์ํ ๋)๋ @PathVariable์ ์ฌ์ฉํ๊ณ , ์ผ๋ฐ์ ์ธ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๊ฒฝ์ฐ์๋ @RequestParam์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๋ค.
์ฐธ๊ณ ์๋ฃ :
https://www.baeldung.com/spring-requestparam-vs-pathvariable
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Boot] ๋ฒ์ ์ฒด๊ณ Semantic Versioning (0) | 2025.02.27 |
---|---|
SOLID ์์น(์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ)๊ณผ Spring์ ํ์์ฑ (0) | 2025.01.06 |
Tomcat์ ๊ตฌ์กฐ, ํ๋ฆ ๋ฐ ์ฉ์ด ๊ฐ๋จ ์ ๋ฆฌ (0) | 2023.12.29 |