版本¶
OpenStack 计算 API 使用 URI 和 MIME 类型两种版本控制方案。在 URI 方案中,路径的第一个元素包含目标版本标识符(例如 https://servers.api.openstack.org/ v2.1/…)。MIME 类型版本控制方案使用 HTTP 内容协商,其中 Accept 或 Content-Type 头部包含标识版本的 MIME 类型(application/vnd.openstack.compute.v2.1+json)。版本 MIME 类型始终链接到基本 MIME 类型,例如 application/json。如果同时使用 HTTP 头部和 URI 指定了冲突的版本,则 URI 优先。
示例:使用 MIME 类型版本控制的请求
GET /214412/images HTTP/1.1
Host: servers.api.openstack.org
Accept: application/vnd.openstack.compute.v2.1+json
X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
示例:使用 URI 版本控制的请求
GET /v2.1/214412/images HTTP/1.1
Host: servers.api.openstack.org
Accept: application/json
X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb
永久链接¶
MIME 类型版本控制方法允许创建永久链接,因为版本方案未在 URI 路径中指定:https://api.servers.openstack.org/224532/servers/123。
如果在 URI 或 HTTP 头部中未指定版本,则会返回一个多项选择响应 (300),其中包含指向可用版本的链接和 MIME 类型。
示例:多项选择:JSON 响应
{
"choices": [
{
"id": "v2.0",
"links": [
{
"href": "http://servers.api.openstack.org/v2/7f5b2214547e4e71970e329ccf0b257c/servers/detail",
"rel": "self"
}
],
"media-types": [
{
"base": "application/json",
"type": "application/vnd.openstack.compute+json;version=2"
}
],
"status": "DEPRECATED"
},
{
"id": "v2.1",
"links": [
{
"href": "http://servers.api.openstack.org/v2.1/7f5b2214547e4e71970e329ccf0b257c/servers/detail",
"rel": "self"
}
],
"media-types": [
{
"base": "application/json",
"type": "application/vnd.openstack.compute+json;version=2.1"
}
],
"status": "CURRENT"
}
]
}
状态为 CURRENT 的 API 是最新的 API,并由 Nova 项目持续改进。状态为 SUPPORTED 的 API 是旧的 API,新功能已冻结。状态为 DEPRECATED 的 API 是将在可预见的未来被移除的 API。提供商应与开发人员和合作伙伴合作,确保在弃用版本之前有足够的时间迁移到新版本。对于任何正在开发但尚未发布的 API,API 状态为 EXPERIMENTAL。
您的应用程序可以通过对根 URL 执行 GET 操作(即,截断从身份验证系统返回的版本和之后的所有内容)来以编程方式确定可用的 API 版本。
您还可以通过对基本版本 URL 执行 GET 操作(例如,https://servers.api.openstack.org/v2.1/)来获取有关特定版本的更多信息。版本请求 URL 必须始终以尾随斜杠 (/) 结尾。如果您省略斜杠,服务器可能会以 302 重定向请求响应。
有关列出版本和获取版本详细信息的请求和响应示例,请参阅 API 版本。
详细的版本响应包含指向 API 服务的可读和机器可处理描述的指针。