【发布时间】:2013-10-08 21:22:16
【问题描述】:
我见过的大多数 Web API 示例都以这种格式显示 URI:
/api/values/ (returns all records)
/api/value/{id} (returns a specific record)
我可以想到我不喜欢这个 URI 约定的时候,但对于我当前的项目来说它是完美的。虽然,它对我不起作用,我不知道我可以做些什么来实现这一点。对我来说,我可以有一个或另一个 - 单数或复数。
如果我的控制器类名为 ValuesController,那么我的 Web API 是
/api/values/
/api/values/{id}
如果我的控制器类名为 ValueController,那么我的 Web API 是
/api/value/
/api/value/{id}
我使用 ADO.NET 实体数据模型在模型设计器中创建了多个实体。都有一个单一的命名约定。例如,Activity、State、Country、User 等。尽管如此,EF 似乎无论如何都创建了多个数据库表。
我为每个实体创建了 APIController。我已经用我的控制器尝试了 2 种命名约定 - 复数和单数,但我没有看到 URI 的预期(和期望)结果。无论我尝试什么,复数和单数 Web API 总是相同的。
仅供参考,我刚刚检查了自动创建的默认 API (ValuesController)。要返回所有记录,我必须指定 /api/values/ 并返回一条记录,我必须指定 /api/values/{id} - 两者都是复数,我确信默认情况下不是这样。
这有什么影响?为复数和单数配置/识别区分形式的 URI 的逻辑在哪里?
【问题讨论】:
-
“我确定默认情况下不是这样的。” - 是的。
标签: asp.net-mvc entity-framework asp.net-web-api