假设我有以下api,其中vin是车辆识别号,并且属于一辆汽车。
GET /fleets/123/cars/55/vin
GET /fleets/123/cars/55/history
我想为一支车队的所有汽车获取所有的Vins。在这些选项中,哪一个更可取:
GET /fleets/123/cars/all/vin
GET /fleets/123/cars/*/vin
GET /fleets/123/vins
GET /fleets/123/cars/vins
前两个保留了层次结构,并使控制器更加直观。后三种感觉破坏了一致性。
这些是首选还是有更好的方法?
答案 0 :(得分:0)
这主要是一个基于意见的问题。这里没有真正的办法,所以您会得到我的意见。
我不确定vin
是什么,但是如果它是一种资源,并且有vins
的集合作为fleet
资源的子代,我希望它住在这里:
GET /fleets/123/vins
这告诉我vin
不是汽车的下属。这是它自己的事,我将获得特定车队的所有葡萄酒。
vin
也作为汽车的下属存在(对我而言)与这一点无关。对我来说,对于他们来说,他们住在这里很有意义:
GET /fleets/123/cars/55/vin
类似地,如果我将最后2个api建模为2个函数,我会称它们为:
findVinsForFleet(fleetId: number);
findVinForCar(fleetId: number, carId: number);