从所有孩子那里获取资源的RESTful方法是什么?

时间:2018-08-29 11:09:13

标签: rest api

假设我有以下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

前两个保留了层次结构,并使控制器更加直观。后三种感觉破坏了一致性。

这些是首选还是有更好的方法?

1 个答案:

答案 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);