Я создаю API с Spring webflux
для измерения времени ответа по сравнению с Spring MVC
с тем же кодом.
В Spring MVC
я отправляю ответ с ResponseEntity<HttpResponse>
.
public class HttpResponse {
private Date timestamp = new Date();
private int status;
private boolean error;
private String message;
private Object data;
public Date getTimestamp() {
return timestamp;
}
public int getStatus() {
return status;
}
public boolean isError() {
return error;
}
public String getMessage() {
return message;
}
public Object getData() {
return data;
}
public HttpResponse() {
super();
}
public HttpResponse(int status, boolean error, String message, Object data) {
super();
this.status = status;
this.error = error;
this.message = message;
this.data = data;
}
}
И это мой оператор возврата в методе requestMapping:
return new ResponseEntity<HttpResponse>(new HttpResponse(httpStatus.value(), error, message, responseObject), httpStatus);
httpStatus является экземпляром HttpStatus
ошибка - логическое
сообщениеa String
responseObject - это объект
Это прекрасно работает, я получаю правильный ответ.
В Spring webflux
я использовал Mono<ResponseEntity<HttpResponse>>
вместо ResponseEntity<HttpResponse>
и это оператор возврата в методе requestMapping.
return Mono.just(new ResponseEntity<HttpResponse>(new HttpResponse(httpStatus.value(), error, message, responseObj), httpStatus));
это дает этот ответ
{
"timestamp": "2018-06-25T16:18:09.949+0000",
"status": 200,
"error": false,
"message": "23",
"data": {
"scanAvailable": true
}
}
Я передал Mono в responseObj