ASP.NET Web API 的通配符路由

问题描述 投票:0回答:1

在我们用 C# 编写的 ASP.NET Web API 项目中,我们需要在 API 中使用通配符路由将以下端点路由到单个操作方法:

http://mycomparydomain.com/api/records/recordsearch?recordModule=45314xx
http://mycomparydomain.com/api/records/itemsearch?itemcategory=1245xx
http://mycomparydomain.com/api/records/item/itemid1234
http://mycomparydomain.com/api/records/itembytype?itemtype=common

这就是我对控制器实现的思考:

[Route("api/[controller]")]
[ApiController]
public class RecordsController : Controller
{   
    [HttpGet("{*}")]        
    public async Task<string> Get([FromQuery] string query)
    {
        // API code
    }
}

可以这样做吗? 如果没有,有什么可能的方法来设置通配符路由?

查看ChatGTP中的问题,建议使用路线为

[HttpGet("{*path}")] 

再次强调,这不是我需要的格式。

c# asp.net-web-api routes wildcard-subdomain
1个回答
0
投票

我不确定使用一个控制器处理所有请求的业务用例,但即使您使用 [HttpGet("{*path}")] 您也必须使用 if/else 过滤内部请求,因此始终建议使用它提高可读性和可维护性。您可以在控制器级别声明 [Route("api/records")] 创建多个操作方法。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.