일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Elastic
- 아이온큐
- file download
- IONQ
- TSLA
- Selenium
- aggs
- API
- java
- dbeaver
- Aggregation
- JPA
- vavr
- redis
- 테슬라
- Cache
- Elasticsearch
- aqqle
- KNN
- Docker
- NORI
- request cache
- mysql
- 양자컴퓨터
- elasticsearch cache
- java crawler
- Query
- ann
- Analyzer
- api cache
Archives
- Today
- Total
아빠는 개발자
[Aqqle] shop api restcontroller 본문
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 |