使用 JSON Home 进行 API 发现¶
什么是 JSON Home?¶
JSON Home 描述了一种为非浏览器 HTTP 客户端进行 API 发现的方法。 草案 仍在审查中,但 keystone 提供了一个可供最终用户访问的实现。 调用 keystone 的 JSON Home API 的结果是一个 JSON 文档,该文档告知用户有关 API 端点、查找它们的位置,甚至有关 API 状态的信息(例如,实验性、受支持、已弃用)。 关于 keystone 的 JSON Home 实现的更多信息可以在 规范 中找到。
请求 JSON Home 文档¶
请求 keystone 的 JSON Home 文档非常简单。 API 不需要令牌,但未来的实现可能会扩展其保护,包括令牌验证和强制执行。 要获取 JSON Home 文档,只需使用 application/json-home 在 Accept 标头中指定即可
curl -X GET -H "Accept: application/json-home" http://example.com/identity/
结果将是一个包含 resources 列表的 JSON 文档
{
"resources": [
"https://docs.openstack.org/api/openstack-identity/3/ext/OS-TRUST/1.0/rel/trusts": {
"href": "/v3/OS-TRUST/trusts"
},
"https://docs.openstack.org/api/openstack-identity/3/ext/s3tokens/1.0/rel/s3tokens": {
"href": "/v3/s3tokens"
},
"https://docs.openstack.org/api/openstack-identity/3/rel/application_credential": {
"href-template": "/v3/users/{user_id}/application_credentials/{application_credential_id}",
"href-vars": {
"application_credential_id": "https://docs.openstack.org/api/openstack-identity/3/param/application_credential_id",
"user_id": "https://docs.openstack.org/api/openstack-identity/3/param/user_id"
}
},
"https://docs.openstack.org/api/openstack-identity/3/rel/auth_catalog": {
"href": "/v3/auth/catalog"
},
"https://docs.openstack.org/api/openstack-identity/3/rel/auth_domains": {
"href": "/v3/auth/domains"
},
"https://docs.openstack.org/api/openstack-identity/3/rel/auth_projects": {
"href": "/v3/auth/projects"
},
"https://docs.openstack.org/api/openstack-identity/3/rel/auth_system": {
"href": "/v3/auth/system"
},
...
]
}
然后可以根据关系的键解析资源列表,以获取有关该端点的字典数据。 这包括一个路径,用户可以在其中找到与该特定资源的端点进行交互的位置。 API 状态信息也将存在。