使用 Web API,我需要将以下两个 Restful 路由重定向到两个不同的操作方法:
/products/2 -> 获取产品 id 2 的信息
/products?someOptionalId=456 -> 获取所有产品的信息。如果提供,请使用 someOptionalId 作为过滤器。
不幸的是,使用标准路由和模型绑定方案,因为两个 URL 都指向同一个产品控制器并且有一个 id 作为参数,我要么遇到编译时问题,创建两个具有相同 int 参数的 Get 方法,要么运行时问题MVC 无法选择特定的操作方法
编译时错误
public IQueryable<Product> Get(int someOptionalIdQs)
{
}
public Product Get(int id)
{
}
运行时错误(注意 hack 为 someOptionalIdQs 使用字符串,然后转换为 int)
public IQueryable<Product> Get(string someOptionalIdQs)
{
}
public Product Get(int id)
{
}
考虑到我希望尽可能保持路由干净,请在理想情况下建议修复,而无需进行任何路由配置更改。谢谢。