>假设我有以下 api,其中 vin 是车辆识别号,属于一辆汽车。
GET /fleets/123/cars/55/vin
GET /fleets/123/cars/55/history
我想为车队获得所有汽车的所有葡萄酒。其中哪个更可取:
GET /fleets/123/cars/all/vin
GET /fleets/123/cars/*/vin
GET /fleets/123/vins
GET /fleets/123/cars/vins
前两个保留层次结构并使控制器更直观。最后三个感觉它打破了一致性。
这些是首选的还是有更好的方法?
这主要是一个基于意见的问题。这里没有一条真正的方法,所以你会得到我的意见。
我不确定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);