목차

    개요

    프로젝트 중에 게시글 목록을 반환하는 API를 만드는 중 3개의 쿼리 파라미터에 따라 전달하는 데이터가 다른 경우가 발생했습니다. 3개의 쿼리 파라미터는 페이지 정보, 정렬 기준, 카테고리 였는데요. 이 3가지를 모두 선택하는 경우, 이 중 2가지만 선택하는 경우, 이중 하나만 선택하는 경우 혹은 하나도 선택하지 않은 경우 모두를 컨트롤러 메서드로 만들기에는 비효율적이라 생각했습니다. 이런 경우 한 가지 메서드로 모든 것을 처리할 수 있는 방법에 대해 소개해드리려고 합니다.

     

    @RequestParam을 사용하자

    @RequestParam을 사용하여 세 가지 쿼리 파라미터를 모두 한 메서드 내에서 정의가 가능합니다.

    아래 예시를 보시죠.

     

    페이지 정보, 정렬 기준, 카테고리 쿼리 파라미터가 모두 한 컨트롤러 메서드의 인자로 들어가있는 것을 보실 수 있습니다.

    @RequestParam의 속성 required에 false 값을 주면 필수값이 아니므로 해당 파라미터는 값이 없어도 됩니다. 다만 제 상황과 같이 값이 주어지지 않을 때에도 기본적으로 적용되어야하는 값들이 있을 수 있습니다.

    위 상황에서는 page 파라미터가 쿼리 파라미터에 없어도 1페이지에 대한 값인 것을 나타낼 수 있어야한다는 점입니다.

    그런 상황에서는 @RequestParam 속성 defaultValue에 값을 지정해주시면 됩니다.

     

     

    참고 블로그

    https://bum752.github.io/posts/%EC%8A%A4%ED%94%84%EB%A7%81%EC%97%90%EC%84%9C-%EA%B0%99%EC%9D%80-%EC%97%94%EB%93%9C%ED%8F%AC%EC%9D%B8%ED%8A%B8%EC%97%90-%EC%BF%BC%EB%A6%AC-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EA%B0%80-%EB%8B%A4%EB%A5%B8-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC-%EB%A9%94%EC%86%8C%EB%93%9C-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0/