๐ŸŒ Backend/๐Ÿƒ Spring

Path Variable VS Query Parameter

DevPoong 2022. 7. 29. 14:19

1. Path Variable

@GetMapping("/{userId}")
public String findUser(@PathVariable String userId){
    return "get userId=" + userId;
}

์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ๋ฐ url ๊ฒฝ๋กœ ๋‚ด์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

2. Query Parameter

@ResponseBody
@RequestMapping("/order")
public String requestParamRequired(
        @RequestParam(required = true) String username,
        @RequestParam(required = false) Integer age){

    log.info("username={}, age={}", username, age);
    return "ok";
}

Query Parameter ๋˜ํ•œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ๋ฐ key-value ํ˜•์‹์œผ๋กœ ์•ž์— ?๋ฅผ ๋ถ™์ด๊ณ  ํ•œ ์Œ์˜ key-value๋งˆ๋‹ค &๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

EX) /order?username=kim&age=24

3. ๋‘˜ ์ค‘์— ๋ฌด์—‡์„ ์จ์•ผ ํ•˜๋‚˜?

ํฌ๊ฒŒ ๋‘ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š”, ํŠน์ •ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Path Variable์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š”, ์–ด๋– ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ•„ํ„ฐ๋ง ๋˜๋Š” ์ •๋ ฌ์„ ํ•œ๋‹ค๋ฉด Query Parameter๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

EX) ๊ณ ๊ฐ ์•„์ด๋””๊ฐ€ ex12์ธ ์‚ฌ๋žŒ์ด 2022๋…„ 7์›” 1์ผ๋ถ€ํ„ฐ 2022๋…„ 7์›” 23์ผ๊นŒ์ง€์˜ ์ฃผ๋ฌธ ๋‚ด์—ญ์„ GET

1. /order/ex12?startDate=20220701&endDate=20220723

2. /order?userId=ex12&startDate=20220701&endDate=20220723

๋‘˜ ์ค‘์— ์–ด๋–ค ๊ฒŒ ๋” ์ ํ•ฉํ• ๊นŒ?

๋‚˜๋Š” userId๋Š” order์˜ key๊ฐ€ ๋˜์ง€๋Š” ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฒˆ ๋ฐฉ์‹์ด ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.