아빠는 개발자

[Aqqle] shop api restcontroller 본문

Aqqle/API

[Aqqle] shop api restcontroller

father6019 2025. 1. 4. 13:21
728x90
반응형

원래 코드 

이걸 리팩토링(?) 해보자 

@RestController
@Api(tags = "1. Shop Apis")
@RequestMapping("api/search")
@RequiredArgsConstructor
public class ShopRestController {

    private final ShopService service;

    @CrossOrigin("*")
    @ApiOperation(value = "search", notes = "검색")
    @GetMapping("shop")
    public CommonResult getDatas(
            @ModelAttribute ShopRequest request
    ) {
        return service.getProducts(request);
    }

}

 

 

  • CORS 설정 구체화:
    • @CrossOrigin("*")는 모든 도메인에서 접근을 허용합니다. 보안상 문제가 될 수 있으니, 허용할 도메인을 구체적으로 지정하는 것이 좋습니다.
  • HTTP 요청 메소드와 URI 명확성:
    • @GetMapping("shop")에서 "shop"이라는 URI가 모호할 수 있습니다. /shops 또는 /shop/products와 같은 보다 직관적인 URI를 고려해보세요.
  • 리턴 타입 개선:
    • CommonResult 클래스가 어떤 목적을 위해 설계되었는지 명확하지 않습니다. API 응답으로 표준화된 구조(예: ResponseEntity)를 사용하는 것이 좋습니다.
  • API 문서화 보강:
    • @ApiOperation의 설명이 너무 짧습니다. 예를 들어, 어떤 검색 파라미터가 허용되는지 자세히 기술하면 API 사용자가 이해하기 쉬워집니다.

 

수정된 코드 

 

@RestController
@Api(tags = "1. Shop APIs")
@RequestMapping("api/search")
@RequiredArgsConstructor
public class ShopRestController {

    private final ShopService service;

    @CrossOrigin("*")
    @ApiOperation(value = "Search products", notes = "검색 조건에 따라 상품 목록을 조회합니다.")
    @GetMapping("/shops")
    public ResponseEntity<CommonResult> getDatas(
            @ModelAttribute ShopRequest request
    ) {
        CommonResult result = service.getProducts(request);
        return ResponseEntity.ok(result);
    }

 

 

response 

 

728x90
반응형

'Aqqle > API' 카테고리의 다른 글

[Aqqle] API shop service  (0) 2025.01.04
[Aqqle] API pakage 구성  (0) 2025.01.04
[Aqqle] API architecture  (1) 2024.08.31