Jan*_*owy 2 java spring reactive-programming spring-webflux
任何人都可以在这个路由示例中告诉我,每次我输入 ex: /api/person/1 等时,它都会转到 /api/person 吗?无论我选择哪种方法,它总是与 /api/person 搭配。
@Bean
public RouterFunction<ServerResponse> monoRouterFunction(PersonService personService) {
return RouterFunctions
.nest(path("/api/person"),
route(method(GET), personService::findAllPeople)
.andRoute(GET("/{id}"), personService::findOnePerson)
.andRoute(POST("/add"), personService::addPerson)
.andRoute(PUT("/update"), personService::updatePerson)
.andRoute(DELETE("/delete/{id}"), personService::deletePerson));
}
Run Code Online (Sandbox Code Playgroud)
下面的代码工作正常。我亲自在当地尝试过。正如 @Brain 所说,只需为 findAllPeople() 处理程序方法添加 GET("/") 即可。
@Bean
public RouterFunction<ServerResponse> monoRouterFunction(PersonService personService)
{
return RouterFunctions
.nest(path("/api/person"),
route(method(GET("/")), personService::findAllPeople)
.andRoute(GET("/{id}"), personService::findOnePerson)
.andRoute(POST("/add"), personService::addPerson)
.andRoute(PUT("/update"), personService::updatePerson)
.andRoute(DELETE("/delete/{id}"), personService::deletePerson));
}
Run Code Online (Sandbox Code Playgroud)
示例工作应用程序:https://github.com/karthikaiselvan/spring-reactive-mongo
与注释模型不同,WebFlux.fn 对路由非常明确:排序和所有谓词都很重要。但好处是它更容易调试,您可以在谓词中设置调试点以了解为什么将请求路由到处理程序。
在这种情况下,这RouterFunction可以描述为:
如果路径以“/api/person”开头
因为第一场比赛赢了,一个像"GET /api/person/42"1)这样的请求会匹配 1),因为"/api/person"它是一个GET请求。
如果你想改变它,你可以改变路由的顺序,或者改变你的谓词route(GET("/"), personService::findAllPeople)。
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |