我正在移植一个使用的 PHP/ CI API,$params = $this->uri->uri_to_assoc()
以便它可以接受具有多种组合的 GET 请求,例如:
有很多代码,如:
$page = 1;
if (!empty($params['page'])) {
$page = (int)$params['page'];
}
Run Code Online (Sandbox Code Playgroud)
1)catchall的常规路由:
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Properties}/{action=Search}/{*params}"
);
});
Run Code Online (Sandbox Code Playgroud)
但是现在我必须解析
params
键/值对的字符串,并且无法利用模型绑定。
2)属性路由:
[HttpGet("properties/search")]
[HttpGet("properties/search/beds/{beds}")]
[HttpGet("properties/search/beds/{beds}/page/{page}")]
[HttpGet("properties/search/page/{page}/beds/{beds}")]
public IActionResult Search(int beds, double lat, double lon, int page = 1, int limit = 10) {
}
Run Code Online (Sandbox Code Playgroud)
显然,将允许的搜索参数和值的每个组合都放在一起是乏味的。