Ошибка симуляции броска вместо возврата ResponseEntity, как go вернуться к методу вызывающего - PullRequest
1 голос
/ 12 января 2020

Я хотел бы понять, как поступить со следующим:

У меня есть микросервис, которому нужно получить продукт:

    @RequestMapping("/details-produit/{id}")
    public String ficheProduit(@PathVariable int id,  Model model){

      ResponseEntity<ProductBean> produit = ProduitsProxy.recupererUnProduit(id);
      model.addAttribute("produit", produit.getBody());

        return "FicheProduit";
    }

мой симуляционный класс:

    @GetMapping( value = "/Produits/{id}")
    ResponseEntity<ProductBean> recupererUnProduit(@PathVariable("id") int id);

И мой CustomErrorDecoder:

    @Override
    public Exception decode(String invoqueur, Response reponse) {

        if (reponse.status() == 400) {
            return new ProductBadRequestException("Requête incorrecte ");
        } else if (reponse.status() == 404) {
            return new ProductNotFoundException("Produit non trouvé ");
        }

        return defaultErrorDecoder.decode(invoqueur, reponse);
    }

Что я хотел бы понять, как вернуться к методу вызывающего абонента, для этого:


    @RequestMapping("/details-produit/{id}")
    public String ficheProduit(@PathVariable int id,  Model model){

ResponseEntity<ProductBean> productBeanResponseEntity = ProduitsProxy.recupererUnProduit(id);

        if (productBeanResponseEntity.getStatusCode() == HttpStatus.OK) {
            model.addAttribute("produit", productBeanResponseEntity.getBody());          
        } else {
            **// Do something here**
        }
        return "FicheProduit";
    }

На данный момент единственное отклонение, которое я нашел, было сделать так:

        try {

            ResponseEntity<ProductBean> produit = ProduitsProxy.recupererUnProduit(id);

            model.addAttribute("produit", produit.getBody());
        } catch (ProductNotFoundException e) {
            log.error(e.getMessage());
        }


Но я бы хотел обработать ошибки такого рода и продолжить процесс метода вызывающей стороны.

Как мне справиться? Это ?

Спасибо!

1 Ответ

0 голосов
/ 13 января 2020

Вы можете написать метод, который будет перехватывать исключения или возвращать продукт. Также нет необходимости получать тип возврата ResponseEntity в симулируемый клиент без особой причины. Фрагменты ниже:

@GetMapping(value = "/Produits/{id}")
ProductBean recupererUnProduit(@PathVariable("id") int id);
private ProductBean getProduct(int productId) {
   try {
       return produitsProxy.recupererUnProduit(productId);
   } catch (ProductNotFoundException e) {
       log.error(e.getMessage());
   }
}
...