小编Cce*_*e32的帖子

来自路径/路由的 ASP.NET Core API 搜索参数

我正在移植一个使用的 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)

我尝试过的两种 ASP.NET Core 2.1 技术看起来都是杂乱无章的,所以我希望得到有关更好解决方案的任何指导:

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)

显然,将允许的搜索参数和值的每个组合都放在一起是乏味的。

更改这些端点的签名不是一种选择。

asp.net rest asp.net-core

6
推荐指数
1
解决办法
6215
查看次数

标签 统计

asp.net ×1

asp.net-core ×1

rest ×1