Можно ли ответить с ошибкой http, что код переменной java spring? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть микросервис, и он получает ответ от другого. И на основании полученного мной ответа я должен ответить соответственно. У меня нет полного списка кодов ошибок, которые я могу получить, поэтому возникает вопрос - могу ли я генерировать коды ошибок на лету для своего собственного ответа? Из того, что я видел весной, ответы предопределены в коде. Мне нужно проявить гибкость *

Я получаю код XXX, я отвечу XXX.

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Попробуйте этот код: (Пример кода)

@RequestMapping(value = "/validate", method = RequestMethod.GET, produces = "application/json")
public ResponseEntity<ErrorBean> validateUser(@QueryParam("jsonInput") final String jsonInput) {
    int numberHTTPDesired = 400;
    ErrorBean responseBean = new ErrorBean();
    responseBean.setError("ERROR");
    responseBean.setMessage("Error in validation!");

    return new ResponseEntity<ErrorBean>(responseBean, HttpStatus.valueOf(numberHTTPDesired));
}
0 голосов
/ 22 апреля 2020

Я работал над таким вариантом использования, используя следующую концепцию. Попробуйте создать общее исключение c для микро сервисов. Примите 2 параметра в исключении как сообщение об ошибке и еще один как код ошибки. Бросьте исключение из вызываемой службы и перехватите то же исключение в вызывающей службе в шаблоне отдыха или симулируйте вызов клиента.

public class MyException extends Exception {

  private String errorCode;

  public MyException() {
     super();
  }

  public MyException(String message, String errorCode) {
    super(message);
    this.errorCode = errorCode;
  }
} 

-

    try {
        return myApiService.getUser();//call to myApiService microservice
    } catch (MyException e) {
        logger.error("Error: {}", e.getMessage());
        throw new MyException(e.getMessage(), e.getCode());
    }
...