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