我一直在玩新的 Web API 2(顺便说一句,它看起来很有前途),但是让一些路由工作我有点头疼。当我有 GetAllUsers / GetUser(int id) 时一切正常,但是当我添加 GetUserByName(string name) 和/或 GetUserByUsername(string username) 时,事情开始变得令人毛骨悚然。我知道 int 将是第一个,我可以重新排序路线,但让我们想象以下场景:
一个用户可以有一个有效的username=1234
或name=1234
(我知道这不太可能,但我们需要防止任何可能的情况),我们可能在数据库中有一个有效的 1234 ID,所有的路由都会混淆。
也许这是我们需要在新的 WebAPI 2 上使用的东西,所以我想我可以提供一个“解决方法”,将过滤器作为查询字符串传递给同一控制器中的不同操作,例如api/users/?username=1234
(GetUserByUsername) 或api/users/?name=1234
(GetUserByName)
但我无法让查询字符串通过......实际上上面的任何查询字符串选项都被 GetAllUsers 捕获。
有没有人对这种情况有任何建议/修复?
非常感谢