本节介绍 RESTful API 服务版本 2 和 RESTful API 服务版本 1 之间的差异:
RESTful API 版本 2 和 RESTful API 版本 1 同时可用,本指南的其余部分显示版本 1 示例。使用请求 URI 的服务版本部分(v1 或 v2)选择要使用的 REST API 版本。
RESTful API 版本 2 操作始终返回可编写脚本的值。可编写脚本的值对于每种类型的属性都具有相同的稳定形式。
RESTful API 版本 1 操作通常(但并非始终)返回可编写脚本的值。例如,RESTful API 版本 1 有时返回完整 Javascript 日期格式的日期时间字符串,有时返回 ISO 8601 日期时间格式的日期时间字符串。RESTful API 版本 2 始终返回 ISO 8601 日期时间格式的日期时间字符串。
在以下示例中,GET /api/system/v1/updates 操作返回完整 Javascript 日期格式的日期时间字符串,GET /api/system/v2/updates 操作返回 ISO 8601 日期时间格式的日期时间字符串:
GET /api/system/v1/updates { "updates": [{ "status": "previous", "href": "/api/system/v1/updates/ak-nas@2013.06.05.4.0,1-1.7", "release_date": "Fri May 01 2015 20:13:00 GMT+0000 (UTC)", "install_date": "Tue Nov 15 2016 01:01:07 GMT+0000 (UTC)", "version": "2013.06.05.4.0,1-1.7", "date": "Fri May 01 2015 20:13:00 GMT+0000 (UTC)" }] } GET /api/system/v2/updates { "updates": [{ "status": "previous", "href": "/api/system/v2/updates/ak-nas@2013.06.05.4.0,1-1.7", "release_date": "2015-05-01T20:13:00Z", "install_date": "2016-11-15T01:01:07Z", "version": "2013.06.05.4.0,1-1.7", "date": "2015-05-01T20:13:00Z" }] }
RESTful API 版本 1 操作有时会为同一属性返回不同的值,具体取决于属性的访问方式。RESTful API 版本 2 操作返回一致的值,而与属性的访问方式无关。
在以下示例中,当列出所有的复制操作时,max_bandwidth 属性的值以 -1 形式返回:
GET /api/storage/v1/replication/actions { "actions": [{ "id": "71b1b8b9-9c57-c969-aab9-f96d5f4e5d54", ... "max_bandwidth": -1, ... }] }
如果仅指定了一个复制操作,则 max_bandwidth 属性的值以 0 形式返回,即使基础值未改变也是如此:
GET /api/storage/v1/replication/actions/71b1b8b9-9c57-c969-aab9-f96d5f4e5d54 { "action": { "id": "71b1b8b9-9c57-c969-aab9-f96d5f4e5d54", ... "max_bandwidth": 0, ... } }
RESTful API 版本 2 操作始终为特定属性返回相同的值,而与该属性值的访问方式无关:
GET /api/storage/v2/replication/actions { "actions": [{ "id": "71b1b8b9-9c57-c969-aab9-f96d5f4e5d54", ... "max_bandwidth": -1, ... }] } GET /api/storage/v2/replication/actions/71b1b8b9-9c57-c969-aab9-f96d5f4e5d54 { "action": { "id": "71b1b8b9-9c57-c969-aab9-f96d5f4e5d54", ... "max_bandwidth": -1, ... } }