Как правильно вернуть HttpStatus в Mono <ResponseEntity>? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть API, который возвращает код HttpStatus. И на основе кода привратник выполнит какое-то действие. Ниже приведен скелет API.

@GetMapping("/globalretry")
public Mono<ResponseEntity> testGlobalRetryFilter(@RequestParam(name = "code") int code) {
    Map<String, Object> map = new LinkedHashMap<>();
    map.put("code", code);
    switch (code) {
        case 200:
            map.put("status", "SUCCESS");
            break;
        case 504:
            map.put("status", "RETRY: GATEWAY_TIMEOUT");
            break;
        default:
            map.put("status", "BAD_REQUEST");
            break;
    }
    return Mono.just(new ResponseEntity(map, HttpStatus.valueOf(code)));
}

Теперь проблема в том, что если я верну код ответа таким образом, то Spring не сможет определить код состояния из Mono<ResponseEntity>. Может ли какой-либо орган помочь мне с тем, как вернуть statuscode таким образом, чтобы пружина могла определить код состояния ответа

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете создать свой собственный объект, плюс в конструкции вы также добавляете HTTP_STATUS. Пример:

new ResponseEntity<>(
            new ErrorResponse(HttpStatus.BAD_REQUEST, LOGIN_NOT_UNIQUE_MSG),
            HttpStatus.BAD_REQUEST);

public class ErrorResponse {
private HttpStatus status;
private int code;
private String message;

public ErrorResponse(HttpStatus status, String message) {
    this.message = message;
    this.status = status;
    this.code = status.value();
}

}

...