ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @RequestParam과 @PathVariable 의 장단점 비교
    Spring 2023. 6. 29. 22:09
    728x90

     

     

    @ RequestParam과 @PathVariable은 스프링 프레임워크에서 사용되는 어노테이션으로, 웹 애플리케이션에서 HTTP 요청의 매개변수를 가져오는 데 사용된다.

    둘 다 컨트롤러 메서드의 매개변수에 적용되며, 주어진 요청의 데이터를 추출하여 해당 매개변수에 바인딩한다.

    그러나 각각의 어노테이션은 동작 방식에서 차이가 있다.

     


     

     

    @RequestParam (key=value 매개변수 형식)

    @RequestParam은 HTTP 요청의 쿼리 매개변수를 추출합니다.
    쿼리 매개변수는 URL 뒤에 "?" 문자로 시작하고 "key=value" 형식으로 전달되는 매개변수입니다.
    예를 들어, "/api/user?id=123"의 경우 id는 쿼리 매개변수입니다.
    @RequestParam 어노테이션을 사용하면 매개변수에 해당하는 쿼리 매개변수 값을 바인딩할 수 있습니다.
    기본적으로 필수 매개변수이며, 값을 생략하면 예외가 발생합니다.
    예시: @RequestParam("id") int userId

     

     


     

    @PathVariable

    @PathVariable은 URL 경로의 일부를 추출합니다.
    URL 경로의 일부는 중괄호({})로 둘러싸여 있으며, 경로 변수라고도 합니다.
    예를 들어, "/api/user/{id}"의 경우 id는 경로 변수입니다.
    @PathVariable 어노테이션을 사용하면 경로 변수 값을 매개변수에 바인딩할 수 있습니다.
    기본적으로 필수 매개변수이며, 경로에서 해당 변수를 찾을 수 없으면 예외가 발생합니다.

     

     


    🔸 장점

     

    @RequestParam:

    선택적 매개변수로 사용할 수 있으므로, 매개변수를 생략하거나 기본값을 지정할 수 있습니다.
    여러 개의 쿼리 매개변수를 처리할 수 있습니다.
    요청 매개변수의 이름과 매개변수 이름이 다를 경우에도 매핑이 가능합니다.

     

    @PathVariable:

    경로의 특정 부분을 추출하기 때문에, 경로 기반의 리소스 식별에 유용합니다.
    RESTful API에서 자주 사용됩니다.
    경로 변수의 위치와 이름이 일치해야 하므로, 경로 구조를 변경하면 매개변수에 대한 수정 없이 경로를 유지할 수 있습니다.

     

     

    🔸 단점

     

    @RequestParam:

    매개변수가 필수적이며 생략할 수 없습니다.
    쿼리 매개변수가 많을 경우에는 매개변수의 수가 증가하여 코드가 장황해질 수 있습니다.

    @PathVariable:

    경로 변수의 위치와 이름이 일치해야 합니다.
    경로 변수의 값이 복잡한 문자열이거나 경로 일부로 사용할 수 없는 경우에는 제한이 있습니다.

     

    단, @RequestParam의 경우 매개변수로 객체를 전달할 수 있지만, 

    @PathVariable 어노테이션으 경로 변수의 값을 추출하기 때문에 해당 매개변수에 바인딩 할 때 객체를 직접 전달할 수 없다.

     

    어떤 어노테이션을 사용할지 선택하는 것은 사용 사례에 따르나, 일반적으로, 쿼리 매개변수를 통해 선택적인 매개변수를 전달하거나 여러 매개변수를 처리해야 할 때는 @RequestParam을 사용하고, URL 경로에서 리소스를 식별하거나 경로 구조가 중요한 경우에는 @PathVariable을 사용하는 것이 좋다

    728x90
Designed by Tistory.