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,即使它们不需要实际检索数据?或者这是一个糟糕的设计案例,我真的应该重新思考我是如何做到这一点的?我的直觉有点不对劲。
您应该尽量遵循RESTful设计。如果有人试图消耗的资源不需要它,那么就把它排除在外。尽量使API尽可能清晰和简单。
如果您需要创建复杂或更详细的API方法,那么您总是可以通过HTTP POST请求为大型响应提供这些方法。
保持简单。保持API清洁。清除定义良好的控制器,这些控制器只接受特定资源所需的内容。