У меня есть нижеследующая функция Handler, которая принимает POST-запрос «BookingRecord».Я получаю Mono из ServerRequest с помощью bodyToMono (), а затем подписываюсь на Mono, так как мне нужен тип BookingRecord, чтобы вызвать REST-сервис для возврата Mono "", используя WebClient.Я объявил стоимость в качестве переменной экземпляра, чтобы использовать ее в операторе возврата.
public class BookingHandler
{
private Mono<Fare> fare;
private WebClient webClient= = WebClient.create("http://localhost:8080");
public HandlerFunction<ServerResponse> book = request -> {
request.bodyToMono(BookingRecord.class)
.subscribe(br ->
{
fare = this.webClient.get()
.uri("/fares/get/{flightNumber}/{flightDate}", br.getFlightNumber(), br
.getFlightDate())
.retrieve()
.bodyToMono(Fare.class);
});
return ServerResponse.ok()
.body(BodyInserters.fromPublisher(fare, Fare.class));
};
}
Но этот код не работает.Подписка не выполняется !!Почему это так?
Мне пришлось изменить его на приведенный ниже код, чтобы он работал !.
request.bodyToMono(BookingRecord.class)
.subscribe(br ->
{
flightNumber = br.getFlightNumber();
flightDate = br.getFlightDate();
});
fare = this.webClient.get()
.uri("/fares/get/{flightNumber}/{flightDate}", flightNumber, flightDate)
.retrieve()
.bodyToMono(Fare.class);
Так почему мой первый код не вызывает подписку?Я использую SpringBoot 2.1.0.M4.