본문 바로가기

개발중/Spring

PathVariable 으로 id 값을 넘길 때

728x90
반응형

아래와 같이 값 정보 반 때 이런 로직을 만들고 싶다.

 

id 값이 있다면 => 전체 목록을 반환

id 값이 없다면 => id 값 정보 반환


 

    @GetMapping("/{id}")

    public ResponseEntity<CommonResponse> getLicenses(

        LicenseSearch licenseSearch

        , @PathVariable(name="id", required = false) long id) {

       

        if(id == 0){

            return ResponseEntity.ok().body(

                new CommonResponse(

                    licenseService.getAllLicenseByLicenseSearch(licenseSearch)

                    , LicenseHateoas.values()

                )

            );

        }else{

            return ResponseEntity.ok().body(

                new CommonResponse(

                    licenseService.getLicenseById(id)

                )

            );

        }

    }


현재는 이렇게 두가지 메소드를 타고 있는데 어떤게 더 나은 방법인지 고민을 해봐야 겠다,

명확하다고 생각하는 법은 이 방법이지만 위의 방법처럼 할 경우에는 하나의 메소드에서 분기 처리가 가능하기 때문에 메소드가 많아지지 않고,

 

근데 또 하나의 API 는 하나의 일을 해야 하니까 이 방법이 맞는 것 같기도 하고.

진지하게 고민을 좀 해봐야 겠고만.


 

    @GetMapping("")

    public ResponseEntity<CommonResponse> getLicenses( LicenseSearch licenseSearch ) {

        return ResponseEntity.ok().body(

            new CommonResponse(

                licenseService.getAllLicenseByLicenseSearch(licenseSearch)

                , LicenseHateoas.values()

            )

        );

    }

 

    @GetMapping("/{id}")

    public ResponseEntity<CommonResource> getLicenses(@PathVariable(name = "id", required = true) long id) {

        return ResponseEntity.ok().body(new CommonResource(licenseService.getLicenseById(id), LicenseHateoas.values()));

    }


 

728x90
반응형