【问题标题】:Web API partially (start with) match route in ControllerWeb API 部分(开始)匹配控制器中的路由
【发布时间】:2022-01-12 22:16:43
【问题描述】:

如何将多个 url 映射到一种操作方法?例如,http://localhost:10000/api/ABChttp://localhost:10000/api/ABCDCD 将映射到相同的操作名称,因为两者都以 ABC 开头。我无法将ABCABCDCD 添加为路线,因为我不会提前知道用户会通过什么。

这是我目前的方法

[HttpGet]
[Route("~/api/ABC/")]
public HttpResponseMessage GetData()
{
}

我尝试使用{ver},但没有成功。

【问题讨论】:

    标签: c# asp.net-web-api asp.net-web-api-routing attributerouting


    【解决方案1】:

    您可以使用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();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-06
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 2013-11-04
      • 2020-01-04
      • 2013-05-26
      • 2015-02-27
      • 1970-01-01
      相关资源
      最近更新 更多