我正在尝试使用不同的端点路由我的应用程序,为此,我需要知道是否存在一种使字段在路由路径中为可选的方法。我正在使用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行条件,而代码看起来也不会太复杂。