언어 및 도구들 공부/Spring

Path 파라미터와 QueryString의 차이점

Dr.Mlem 2024. 10. 15. 22:26

Q.
(08-04 참고)

PathController 를 참고해서 말해줘. path 파라미터와 QueryString은 무슨 차이야?



A.
PathController를 참고하여 설명드리겠습니다.

Path 파라미터

정의: URL 경로의 일부로 포함된 변수입니다.
예시: /mypath/{txt1}/{txt2}/{num}
 1. 실제 요청: /mypath/hello/world/123
 2. 매핑된 메서드: mypath(Model model, @PathVariable("txt1") String txt1, @PathVariable("txt2") String txt2, @PathVariable("num") int num)
 3. 전달된 값: txt1 = "hello", txt2 = "world", num = 123

QueryString

정의: URL의 끝에 ?로 시작하여 key=value 형식으로 전달되는 파라미터입니다.
예시: /mypath?txt1=hello&txt2=world&num=123
 1. 실제 요청: /mypath?txt1=hello&txt2=world&num=123
 2. 매핑된 메서드: mypath(Model model, @RequestParam("txt1") String txt1, @RequestParam("txt2") String txt2, @RequestParam("num") int num)
 3. 전달된 값: txt1 = "hello", txt2 = "world", num = 123


차이점

1.위치:

1) Path 파라미터는 URL 경로의 일부입니다.
2) QueryString은 URL의 끝에 위치합니다.


2.형식:

1) Path 파라미터는 슬래시(/)로 구분됩니다.
2) QueryString은 ?로 시작하고 &로 구분됩니다.


3. 사용 용도:

1) Path 파라미터는 리소스를 식별하는 데 주로 사용됩니다.
2) QueryString은 필터링, 검색, 정렬 등의 추가 정보를 전달하는 데 사용됩니다.


예시 코드

Path 파라미터를 사용하는 PathController의 메서드:


@GetMapping("/mypath/{txt1}/{txt2}/{num}")
public String mypath(Model model,
        @PathVariable("txt1") String txt1,
        @PathVariable("txt2") String txt2,
        @PathVariable("num") int num) {
    model.addAttribute("txt1", txt1);
    model.addAttribute("txt2", txt2);
    model.addAttribute("num", num);
    return "path/mypath";
}

 

 

QueryString을 사용하는 메서드:

 

@GetMapping("/mypath")
public String mypath(Model model,
        @RequestParam("txt1") String txt1,
        @RequestParam("txt2") String txt2,
        @RequestParam("num") int num) {
    model.addAttribute("txt1", txt1);
    model.addAttribute("txt2", txt2);
    model.addAttribute("num", num);
    return "path/mypath";
}