路由器功能()中路由的可选字段

时间:2019-03-29 11:49:08

标签: java router spring-webflux

我正在尝试使用不同的端点路由我的应用程序,为此,我需要知道是否存在一种使字段在路由路径中为可选的方法。我正在使用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);
  } 

此处fromdate和today的数量是可选的,即,如果未提供这些值,那么我们将仅通过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行条件,而代码看起来也不会太复杂。

0 个答案:

没有答案