第 2 章 API 参考
			Satellite 服务器上提供了完整的 API 参考 https://satellite6.example.com/apidoc/v2.html (将 satellite6.example.com 替换为 Satellite 服务器的主机名)。请注意,即使 Satellite 6 API 版本 1 和 2 可用,但红帽只支持版本 2。
		
2.1. 了解 API 语法
复制链接链接已复制到粘贴板!
				内置 API 引用显示 API 路由或路径,前面带有 HTTP 动词:
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
 API 使用的 HTTP 动词为 GET、POST、PUT 和 DELETE。有关一些示例,请参见位于 http://satellite6.example.com/apidoc/v2/hosts.html 的 API 参考文档的 HOSTS 部分。如果您已熟悉 API 语法,并且 curl 命令您可以跳过本节。
			
HTTP_VERB API_ROUTE
HTTP_VERB API_ROUTE
				要使用 API,请使用参考文档中的 API 路由和命令语法中的 API 路由构建命令。例如: curl 手册页显示以下基本语法: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
 本指南中使用的选项包括:-- 
curl [options] [URL...]
curl [options] [URL...]X、--request 命令,其中 command 是 HTTP 动词。
			使用 GET HTTP Verb
				GET HTTP 动词用于从 API 获取现有条目或资源的数据。
			
				将 API HOSTS 部分中的示例(如 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
 Satellite 只支持连接到 API 的 HTTPS,并且需要某种形式的身份验证。
			
GET /api/hosts 和 curl 语法)相结合: curl -X GET https://satellite6.example.com/api/hosts
curl -X GET https://satellite6.example.com/api/hosts
				对于可用的示例,我们必须至少添加带有 the 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				 上述 API 响应表明总计有两个结果,在下面返回两个结果,这是结果的第一个页面,每个页面的最大结果设置为 20。这在 第 2.2 节 “了解 JSON 响应格式” 中更为详细地解释。
			
-u 选项的用户名,并使用 -k 选项跳过 SSL 对等证书验证检查: 
				API 引用中的一些示例包括以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
 这些是 API 路由参数,且必须替换为适当的值。路由参数以冒号开头,并以 
:参数 形式前面以冒号开头的术语。例如: GET /api/hosts/:id
GET /api/hosts/:idid 结尾。
			注意
					在 Satellite 6 中,API 的版本 2 是默认值。因此,在 API 调用的 URL 中不需要使用 
v2。
				使用 POST HTTP Verb
				POST HTTP 动词用于将数据提交到 API,以创建新条目或资源。数据必须采用 JSON 格式,并可使用 
-d, --data 选项包含内联,后跟带引号的 JSON 格式的数据(用大括号 {} 括起)。或者,未加引号的 JSON 格式的数据可以包含在文件中,并使用 curl 命令的 @ 选项指定。例如,-d @file.json。
			
				将外部文件用于 JSON 格式的数据的优点包括较少的问题:引用和转义,可以使用您喜欢的编辑器,以帮助查找和避免错误,以及外部工具检查 JSON 数据的有效性或重新格式化它。例如,ya jl 软件包包含 json_verify 工具和 json_reformat 工具。
			
				使用 json_verify 工具,您可以检查 JSON 文件的有效性,如下所示: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
json_verify < test_file.json
$ json_verify < test_file.json
				API 调用返回的无结构 JSON 数据可以通过 python 模块 json.tool 传送:
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
 Alternately,使用 json_reformat 工具: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
 输出格式在 第 2.2 节 “了解 JSON 响应格式” 中解释。
			
curl API_call | python -m json.tool
curl API_call | python -m json.toolcurl API_call | json_reformat
curl API_call | json_reformat
				API 参考在 Activation keys 部分中包括以下内容: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
POST /katello/api/activation_keys
POST /katello/api/activation_keys
				这是 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
POST /katello/api/activation_keys 命令的可能格式: 
curl -X POST -k -u sat_username:sat_password \ -d @file_of_json-formatted_data \ https://satellite6.example.com/katello/api/activation_keys
curl -X POST -k -u sat_username:sat_password \
-d @file_of_json-formatted_data \
https://satellite6.example.com/katello/api/activation_keys
				要查看 POST HTTP 动词如何工作,请创建一个测试文件,如 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
activation-key.json,其内容如下: 
{"organization_id":1, "name":"TestKey", "description":"Just for testing"}
{"organization_id":1, "name":"TestKey", "description":"Just for testing"}
				以下示例将通过应用刚才创建的文件中的数据来创建新的激活码: 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				 要在 Web UI 中查看此条目,请导航到  
使用 PUT HTTP Verb
				PUT HTTP 动词用于将数据提交到 API,以更新现有条目或资源。与 POST API 调用类似,数据必须采用 JSON 格式,并可使用 
-d, --data 选项加上带引号的 JSON 格式的数据(用大括号 {} 括起)。或者,未加引号的 JSON 格式的数据可以包含在文件中,并使用 curl 命令的 @ 选项指定。例如,-d @file.json。
			
				若要更改现有值或附加到现有资源,可使用 PUT HTTP 动词。API 引用有以下条目可用于更新激活码: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
PUT /katello/api/activation_keys/:id
PUT /katello/api/activation_keys/:id
				要更新现有的激活码,请使用以下格式的命令: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				 使用要更新的激活码的 ID 替换 :id。将 PUT 命令与相同值一起使用多次 不会创建 多个条目。
			
curl -X PUT -k -u sat_username:sat_password \ -d @file_of_json-formatted_data \ https://satellite6.example.com/katello/api/activation_keys/:id
curl -X PUT -k -u sat_username:sat_password \
-d @file_of_json-formatted_data \
https://satellite6.example.com/katello/api/activation_keys/:id
				例如,可以通过编辑之前创建的文件来更新上例中创建的 test Activation 密钥,如下所示: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				 按如下所示使用命令在 JSON 文件中应用更改: 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
{"organization_id":1, "name":"TestKey", "description":"Just for testing","max_hosts":"10" }
{"organization_id":1, "name":"TestKey", "description":"Just for testing","max_hosts":"10" }
使用 DELETE HTTP Verb
				要删除资源,请将 DELETE 动词与包含要删除的资源的 ID 的 API 路由一起使用。
			
				要删除现有的激活码,请使用以下格式的命令: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				 使用要删除的激活码的 ID 替换 :id。例如: 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
curl -X DELETE -k -u sat_username:sat_password \ https://satellite6.example.com/katello/api/activation_keys/:id
curl -X DELETE -k -u sat_username:sat_password \
https://satellite6.example.com/katello/api/activation_keys/:id与 API 参考相关的 API 错误消息
				API 使用 RAILs 格式来指示错误: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				 这会转换为 API 引用中使用的以下格式: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
			
Nested_Resource.Attribute_Name
Nested_Resource.Attribute_NameResource[Nested_Resource_attributes][Attribute_Name_id]
Resource[Nested_Resource_attributes][Attribute_Name_id]2.2. 了解 JSON 响应格式
复制链接链接已复制到粘贴板!
				使用 GET 调用 API 将以 JSON 格式返回结果。通过 Python json.tool 模块传递输出会带来更人类可读的格式。
			
Collections 的 JSON 响应格式
				集合是对象列表,如主机和域。集合 JSON 响应的格式由 metadata 字段部分组成,后跟 results 部分。以下是使用 API 路由 
GET /api/domains 时用于域列表的集合 JSON 响应的格式示例。输出通过 json.tool 传送,以便更轻松地阅读结果部分。
			
				响应元数据字段如下所述:
			
- total- 没有搜索参数的对象总数。
- Subtotal- 使用给定搜索参数返回的对象数量(如果没有搜索,则subtotal等于 total)。
- page- 页面号。
- per_page- 每个页面返回的最大对象数。
- Limit- 在集合响应中返回指定数量的对象。
- offset- 返回集合前跳过的对象数量。
- search- 基于- scoped_scoped语法的搜索字符串。
- 排序- 按- 集合排序的字段。
- 顺序-排序顺序,可以是升序的 ASC 或 DESC (降序)。
 
- results- 对象集合。
单个对象的 JSON 响应格式
				单对象 JSON 响应用于显示单个对象。GET 请求需要对象的唯一标识符 
:id 或 :name。请注意,:name 不能始终用作唯一标识符,但 :id 始终可以被使用。单对象 JSON 响应的格式仅由对象的属性组成。
			
				以下是使用 API 路由 
GET /api/domains/23 或 GET /api/domains/qa.lab.example.com 时,单对象 JSON 响应的格式示例。