Я пытаюсь направить мое приложение с разными конечными точками, и для этого мне нужно знать, есть ли способ сделать поле необязательным в пути маршрута.Я использую работу фрейма Spring webflux (org.springframework.web.reactive.function.server.RouterFunction).
Я нашел обходной путь для этого, но это увеличивает строку кода.Только что определены несколько маршрутов, которые вызывают один и тот же обработчик.
public RouterFunction<ServerResponse> RouterFunction1(
Handler handler) {
return route(
GET("/Demo/{UUID}/{SeN}/{Amount}/{fromDate}/{toDate}"),
Handler::retrieveDetails);
}
здесь суммы от даты и до даты являются необязательными, то есть, если эти значения не предоставлены, мы будем искать детали только через UUID и SeN.
это мой обходной путь:
public RouterFunction<ServerResponse> RouterFunction1(
Handler handler) {
return route(
GET("/Demo/{UUID}/{SeN}/{Amount}/{fromDate}/{toDate}"),
Handler::retrieveDetails)
.andRoute(GET("/Demo/{UUID}/{SeN}/{Amount}"),
Handler::retrieveDetails)
.andRoute(GET("/Demo/{UUID}/{SeN}/{fromDate}/{toDate}"),
Handler::retrieveDetails)
.andRoute(GET("/Demo/{UUID}/{SeN}"),
Handler::retrieveDetails);
}
Есть ли способ, которым мы описываем эти 3 входа как необязательные, чтобы мы могли обрабатывать условие только в 1 строке, и код не выглядел бы слишком сложным.