属性带空参数的路由
本文关键字:路由 参数 属性 | 更新日期: 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