Web API 部分(开始于)匹配 Controller 中的路由
Web API partially (start with) match route in Controller
如何将多个网址映射到一个操作方法?例如 http://localhost:10000/api/ABC
和 http://localhost:10000/api/ABCDCD
将映射到相同的操作名称,因为它们都以 ABC 开头。我无法将 ABC
和 ABCDCD
添加为路由,因为我无法提前知道用户将通过什么。
这是我目前的方法
[HttpGet]
[Route("~/api/ABC/")]
public HttpResponseMessage GetData()
{
}
我尝试使用 {ver} 但它没有用。
您可以使用 patterns.
[HttpGet]
[Route("~/api/ABC{data}")]
public IActionResult GetData(string data)
{
return Ok(data);
}
当您请求 https://localhost/api/ABCEXAMPLE
时,字符串 data
的值将是 EXAMPLE
。不想用也可以不用
更新:
更好的解决方案是使用正则表达式:
[HttpGet]
[Route("~/api/{s:regex(^ABC.*)}")]
public IActionResult GetData()
{
return Ok();
}
如何将多个网址映射到一个操作方法?例如 http://localhost:10000/api/ABC
和 http://localhost:10000/api/ABCDCD
将映射到相同的操作名称,因为它们都以 ABC 开头。我无法将 ABC
和 ABCDCD
添加为路由,因为我无法提前知道用户将通过什么。
这是我目前的方法
[HttpGet]
[Route("~/api/ABC/")]
public HttpResponseMessage GetData()
{
}
我尝试使用 {ver} 但它没有用。
您可以使用 patterns.
[HttpGet]
[Route("~/api/ABC{data}")]
public IActionResult GetData(string data)
{
return Ok(data);
}
当您请求 https://localhost/api/ABCEXAMPLE
时,字符串 data
的值将是 EXAMPLE
。不想用也可以不用
更新:
更好的解决方案是使用正则表达式:
[HttpGet]
[Route("~/api/{s:regex(^ABC.*)}")]
public IActionResult GetData()
{
return Ok();
}