所以这更像是一个设计问题,但我认为这是一个值得质问的问题。
这是我的困境。在设计用于消费的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,即使它们不需要实际检索数据?或者这是一个糟糕的设计案例,我真的应该重新考虑我是如何做到这一点的?在我的直觉中感觉到某些东西。
答案 0 :(得分:0)
您应该尝试遵循RESTful设计。如果某人试图消费的资源不需要,则将其遗漏。尽量使API尽可能简单明了。
如果您需要创建复杂或更详细的API方法,您可以随时通过HTTP POST请求获取大型响应。
保持简单。保持API清洁。清除定义良好的控制器,只接受该特定资源所需的内容。