* 목적
- order-service에 문제가 있어도 user-service는 정상작동해야 한다.
- 일부러 error 만들어보기
@FeignClient(name = "order-service")
public interface OrderServiceClient {
@GetMapping("{userId}/orders_ng") //api gateway를 거치지 않음
List<ResponseOrder> getOrders(@PathVariable String userId);
}
- error msg를 하드코딩 하는 대신 yml 파일 에 값을 넣어두기
- error msg 수정이 필요할때 1곳만 수정하면 된다!!
@Component
@RequiredArgsConstructor
public class FeignErrorDecoder implements ErrorDecoder {
private final Environment env;
@Override
public Exception decode(String methodKey, Response response) {
switch (response.status()) {
case 400:
break;
case 404:
if (methodKey.contains("getOrders")) {
return new ResponseStatusException(org.springframework.http.HttpStatus.valueOf(response.status()),
env.getProperty("order_service.exception.orders_is_empty"));
}
break;
default:
return new Exception(response.reason());
}
return null;
}
}