rest - 什么是从所有孩子那里获取资源的 RESTful 方式?
问题描述
假设我有以下 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
前两个保留了层次结构并使控制器更直观。最后三个感觉就像它打破了一致性。
这些是首选还是有更好的方法?
解决方案
这主要是一个基于意见的问题。这里没有一种真正的方法,所以你会得到我的意见。
我不确定 avin
是什么,但如果它是一种资源,并且vins
作为资源的子元素有一个集合fleet
,我希望它会住在这里:
GET /fleets/123/vins
这向我传达了一个vin
不是汽车的下属。这是它自己的事情,我正在为一个特定的舰队获得所有的 vins。
avin
也作为 car 的下属存在(对我而言)这一事实与此无关。对我来说,他们住在这里是完全有道理的:
GET /fleets/123/cars/55/vin
同样,如果我将最后 2 个 api 建模为 2 个函数,我会称它们为:
findVinsForFleet(fleetId: number);
findVinForCar(fleetId: number, carId: number);
推荐阅读
- amazon-web-services - 如何从cloudwatch查看日志流属于哪个ECS服务或任务?
- python - 无法为 Zipline 安装 Python 3.5 文件
- python - 来自excel报告的Python dict
- angular - Angular 的文档管理系统
- html - 在NodeJS中获取玉选择框值
- git - 如何为 VSTS 添加 GIT 子模块以用于 Visual Studio 2017
- php - 如何修复我的脚本:更新用户通行证(php mysql)(没有错误但有些东西不起作用)
- python - 使用 Datashader / Holoviews / Bokeh 循环子图
- c - 在 Swift 中使用类型时如何排除 C 枚举案例
- css - 缓存的 CSS 文件将在浏览器中更新多长时间?