繁体   English   中英

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

[英]Web API 2 Routing - should ID's always be included even if they are not necessary?

因此,这更多是一个设计问题,但我认为这是一个值得质疑的问题。

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

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

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

由于我可以仅通过operationID来获取操作数据,因此我实际上不需要包括personID或phonenumberID。 但是,此数据直接绑定到其之前的所有ID。 因此,您将创建“命令链”。

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

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

在这种情况下,为了获得必要的操作,PhoneNumberID现在是相关的和必需的。 在前面的示例中, PhoneNumberID没有执行任何操作,这是因为我具有显式operationID来检索数据。

已经到我的问题了!

所以! 即使实际上不需要检索所有ID,我也应该始终在路由中包含所有ID吗? 还是这是设计不佳的情况,我真的应该重新考虑一下我该怎么做? 我的内心有些不适。

您应该尝试遵循RESTful设计。 如果某人正在尝试消耗的资源不需要它,则将其忽略。 尝试使API尽可能清晰明了。

如果您需要创建复杂的或更详细的API方法,则始终可以通过HTTP POST请求为大型响应提供这些方法。

保持简单。 保持API清洁。 清除定义明确的控制器,这些控制器仅占用特定资源所需的资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM