Web API 2路由 - 即使不需要ID,也应始终包含ID?

时间:2014-04-14 22:10:14

标签: c# rest asp.net-web-api routing

所以这更像是一个设计问题,但我认为这是一个值得质问的问题。

这是我的困境。在设计用于消费的API时,我最终得到了一些非常复杂的路由。这是一个例子:

Route("/people/{personID}/phonenumber/{phoneNumberID}/operation/{operationID}/data")

现在,此路线会获取针对特定人员的特定电话号码的操作中执行的数据。

由于我只能通过operationID获取操作数据,所以我真的不需要包含personID或phonenumberID。但是,此数据直接与之前的所有ID相关联。因此,如果愿意,创建“指挥链”。

例如,我仍然可以删除operationID以获取对特定电话号码执行的所有操作。像这样:

Route("/people/{personID}/phonenumber/{phoneNumberID}/operation")

在这种情况下,PhoneNumberID现在是相关的,并且需要以便进行必要的操作。在前面的示例中PhoneNumberID没有做任何事情,因为我有明确的operationID来检索数据。

已经提出了我的问题!

SO!我是否应该始终在路线中包含所有ID,即使它们不需要实际检索数据?或者这是一个糟糕的设计案例,我真的应该重新考虑我是如何做到这一点的?在我的直觉中感觉到某些东西。

1 个答案:

答案 0 :(得分:0)

您应该尝试遵循RESTful设计。如果某人试图消费的资源不需要,则将其遗漏。尽量使API尽可能简单明了。

如果您需要创建复杂或更详细的API方法,您可以随时通过HTTP POST请求获取大型响应。

保持简单。保持API清洁。清除定义良好的控制器,只接受该特定资源所需的内容。