Необязательные поля в маршруте в функции Router () - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь направить мое приложение с разными конечными точками, и для этого мне нужно знать, есть ли способ сделать поле необязательным в пути маршрута.Я использую работу фрейма 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 строке, и код не выглядел бы слишком сложным.

...