Web API 2路由-应该ID';s总是包括在内,即使它们不是必要的

本文关键字:包括 Web 应该 2路 ID API | 更新日期: 2023-09-27 17:58:23

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

这是我的困境。在为消费设计API时,我最终会遇到一些非常复杂的路由。这里有一个例子:

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

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

由于我可以仅通过operationID来获取操作数据,所以我真的不需要包括personID或phonenumberID。然而,这些数据直接绑定到它之前的所有ID。因此,如果你愿意,可以创建"命令链"。

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

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

在这种情况下,PhoneNumberID现在是相关的,并且需要它来获得必要的操作。在前面的例子中,PhoneNumberID没有做任何事情,因为我有显式的operationID来检索数据。

已经回答我的问题了!

所以!我是否应该始终在路由中包括所有id,即使它们不需要实际检索数据?或者这是一个糟糕的设计案例,我真的应该重新思考我是如何做到这一点的?我的直觉有点不对劲。

Web API 2路由-应该ID';s总是包括在内,即使它们不是必要的

您应该尽量遵循RESTful设计。如果有人试图消耗的资源不需要它,那么就把它排除在外。尽量使API尽可能清晰和简单。

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

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