属性带空参数的路由

本文关键字:路由 参数 属性 | 更新日期: 2023-09-27 18:05:08

我在asp core

中使用以下代码
    [HttpGet]
    [Route("all/{q:alpha}/{begin:int}/{pageSize:int}/{sortBy:alpha}/{sortOrder:alpha}")]
    public IActionResult GetAll(string q, int begin, int pageSize, string sortBy, bool sortOrder)
    {
        return Json(_repository.GetItemsByPage(q, begin, pageSize, sortBy, sortOrder));
    }

应该有可能'q'为空。没有属性路由,一切都很好。下面的请求正在工作:

http://localhost/api/all/?q=&begin=1&pagesize=3&sortBy=title&sortOrder=false

设置了属性路由后,请求是:

 http://localhost/api/all//1/3/title/false

如何使它与空值(q)一起工作?

属性带空参数的路由

根据我的建议,可选参数必须在末尾。

[HttpGet]
[Route("all/{begin:int}/{pageSize:int}/{sortBy:alpha}/{sortOrder:alpha}/{q:alpha}")]
public IActionResult GetAll(string q, int begin, int pageSize, string sortBy, bool sortOrder)
 {
   return Json(_repository.GetItemsByPage(q, begin, pageSize, sortBy, sortOrder));
 }

这样你的url就可以工作了。

http://localhost/api/all/?q=&begin=1&pagesize=3&sortBy=title&sortOrder=false
http://localhost/api/all/1/3/title/false
http://localhost/api/all/1/3/title/false/value of q

现在,如果你的方法有多个可选参数,就有多种方法来解决问题。

 http://localhost/api/all/1/3/title/false?q=1&optinal2=value