Есть фронт, который отправляет разные запросы на промежуточный сервис(далее loadbalancer), он перенаправляет запросы на сервис апи(далее api).
Тот самый loadbalancer:
@RestController
@RequestMapping("/api/profile")
public class ProfileController {
@Autowired
private ProfileProcessor profileProcessor;
@PostMapping
@ResponseBody
public Long create(@RequestBody ProfileInfo request) {
LOGGER.info("Called createProfile... ");
return profileProcessor.create(request);
}
@Component
public class ProfileProcessor {
@LoadBalanced
@Autowired
private RestTemplate restTemplate;
public Long create(ProfileInfo request) {
return restTemplate.postForObject(serviceURI + "/profile", request, Long.class);
}
api:
@RestController
@RequestMapping("/profile")
public class ProfileController {
@Autowired
private ProfileRepository profileRepository;
@PostMapping
@ResponseBody
public Long createProfile(@Valid @RequestBody ProfileEntity request) {
return profileRepository.createProfile(request);
}
далее происходит ошибка, потому как пришел невалидный профайл в реквесте, его перехватывает exception handler:
@ControllerAdvice
public class ExceptionHandlingController {
@Autowired
private Validation validationUtil;
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ResponseEntity<ExceptionResponse> invalidInput(MethodArgumentNotValidException ex) {
ExceptionResponse response = new ExceptionResponse();
BindingResult result = ex.getBindingResult();
response.setErrorCode("400");
response.setErrorMessage("Invalid inputs.");
response.setErrors(validationUtil.fromBindingErrors(result));
return new ResponseEntity<ExceptionResponse>(response, HttpStatus.BAD_REQUEST);
}
получается на loadbalancer возвращается не ожидаемый Long(id), а ResponseEntity с инфой об ошибке, и возникает ошибкa JsonMappingException.
Как мне в такой ситуации перехватить ResponseEntity в loadbalancer'е?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать форматирование числа из "12345678" в "12 345 678"То есть нужно каждую 1000 отделить пробелом, что бы большие числа выглядели эстетично
Есть такой код, из которого формируется ExpandableListView: