오늘도 프로젝트를 진행하다가 제목과 같은 오류를 맞닥뜨렸다. OpenFeign을 통해서 주문 서비스 - 상품 서비스간 호출 시에 오류가 발생했다.
@FeignClient("store-service")
public interface StoreClient {
@GetMapping("/products")
List<ResponseProduct> getProductList(List<Long> productIdList);
}
ㄴ 주문 서비스의 상품 서비스 컨트롤러 호출 부분이다.
@RequestMapping("/products")
@RequiredArgsConstructor
@RestController
public class ProductController {
private final ProductService productService;
@GetMapping
public List<ResponseProduct> getProductList(@RequestBody List<Long> productIdList) {
return productService.getProductList(productIdList);
}
}
ㄴ 상품 서비스의 컨트롤러 부분이다.
분명 메서드도 맞게 작성했고 틀린 곳이 없어보여서 약간 헤맸다. 그런데 나는 분명 GET으로 요청을 보냈는데 로그에서는 POST 관련해서 오류가 발생했다고 나와있었다. 다시 생각해보니 body를 사용한다고 해놓고 GET으로 요청을 보내고 있었다;; 전에 배울 때 GET에 body가 없어야 한다고 배웠다. 요즘에는 GET도 body를 사용할 수 있다고 한 것 같기도 한데 권장하지는 않는다고 했던 것 같다.
보통 조회를 하는 목적으로 GET을 사용하고 내부적으로 뭔가 처리를 해야하면 POST를 사용하는데 이번에는 어쩔 수 없이 POST를 이용하기로 했다.
@FeignClient("store-service")
public interface StoreClient {
@PostMapping("/products")
List<ResponseProduct> getProductList(List<Long> productIdList);
}
@RequestMapping("/products")
@RequiredArgsConstructor
@RestController
public class ProductController {
private final ProductService productService;
@PostMapping
public List<ResponseProduct> getProductList(@RequestBody List<Long> productIdList) {
return productService.getProductList(productIdList);
}
}
이렇게 POST를 이용하도록 바꿔주었다.
앞으로 이런 실수는 하지 말아야지...
'공부 > Spring' 카테고리의 다른 글
| [Spring] CGLIB로 프록시 직접 만들기 (0) | 2024.07.24 |
|---|---|
| [Spring] MapStruct로 이미지 경로 수정하기 + Null Pointer Exception 해결하기 (0) | 2024.06.16 |
| [Spring Web] Spring MVC 컨트롤러 요청/응답 가능한 여러가지 방법 (0) | 2024.03.21 |
| [Spring Web] http body 내용 가져오기 (MapStruct 안 되는 이유) (0) | 2024.03.16 |
| [Spring Web] 컨트롤러에서 String만 리턴해도 되는 이유 (0) | 2024.03.13 |