假设我有两个对象,即用户和约会,其中用户可能有一个或多个约会。
我很好奇我是否应该允许API的消费者过滤'来自Appointments控制器的用户。以下是我对GET操作的调用:
Users Controller
GET
api/Users
api/Users/{userId}
api/Users/{userId}/Appointments
api/Users/{userId}/Appointments/{appointmentId}
Appointments Controller
GET
api/Appointments/
api/Appointments/{appointmentId}
我很好奇在Appointments控制器上为用户实现过滤器是一个好主意(好的做法)......所以上面的调用将成为:
Appointments Controller
GET
api/Appointments/{userId:int?}
api/Appointments/{appointmentId}
在上面的调用中,我为userId添加了一个可选的querystring参数,默认为null。这将允许呼叫者获得所有约会,或者通过userId获得约会。
我想我不确定什么是关系对象的最佳实践。
答案 0 :(得分:0)
如果你想简单,我会建议
用户 GET
api/users
api/user/{id}
api/user/{id}/appointments
约会 GET
api/appointments
api/appointment/{id}
从它的外观来看,api/Appointments/{userId:int?}
并不能很好地阅读,因为用户有预约而预约只有一个用户。在端点api/Appointments/{appointmentId}
的情况下,我不确定AppointmentId
是什么,但如果它是 int ,您将不得不做一些事情基于 int 查找约会或用户的时髦东西,在这种情况下ID可以是相同的。
对于对象树的深度过深可能会使网址结构变得混乱。