第 5 章 使用各种语言的 API 请求
您可以查看从 curl、Ruby 或 Python 向 Red Hat Satellite 发送 API 请求示例。
5.1. 在 curl 中调用 API 复制链接链接已复制到粘贴板!
您可以将 curl
与 Satellite API 搭配使用来执行各种任务。
Red Hat Satellite 需要使用 HTTPS 以及默认情况下,主机识别的证书。如果您还没有添加 Satellite 服务器证书,如 第 4.1 节 “SSL 身份验证概述” 所述,您可以使用-- insecure
选项绕过证书检查。
对于用户身份验证,您可以使用-- user 选项以
表单- user My_User_Name:_My_Password
提供 Satellite 用户凭据。如果没有包含密码,命令会提示您输入它。要降低安全风险,请不要将密码包含在命令中,因为它会成为 shell 历史记录的一部分。为了简单起见,本节中的示例包括密码。
请注意,如果您使用- silent
选项,则 curl
不会显示进度计量或任何错误消息。
本章中的示例使用 Python json.tool
模块格式化输出。
5.1.1. 将 JSON 数据传递给 API 请求 复制链接链接已复制到粘贴板!
您可以使用 API 请求将数据传递给 Satellite 服务器。数据必须采用 JSON 格式。当使用 the-data 选项指定 JSON 数据时,您必须使用-- header
选项设置以下 HTTP 标头:
--header "Accept:application/json" \ --header "Content-Type:application/json"
--header "Accept:application/json" \
--header "Content-Type:application/json"
使用以下选项之一将数据与- data 选项一起包含
:
JSON 格式的字符串
将带引号的 JSON 格式的数据用大括号 {}
括起。在传递 JSON 类型参数的值时,您必须用反斜杠 \
转义引号 "
。例如,在大括号中,您必须将 "示例 JSON 变量"
格式化为 \"Example JSON Variable\"
:
--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}
--data {"id":44, "smart_class_parameter":{"override":"true", "parameter_type":"json", "default_value":"{\"GRUB_CMDLINE_LINUX\": {\"audit\":\"1\",\"crashkernel\":\"true\"}}"}}
JSON 格式的文件
未加引号的 JSON 格式数据包含在文件中,并由 @
符号和文件名指定。例如:
--data @file.json
--data @file.json
将外部文件用于 JSON 格式数据有以下优点:
- 您可以使用您首选的文本编辑器。
- 您可以使用语法检查程序来查找并避免错误。
- 您可以使用工具检查 JSON 数据的有效性或重新格式化它。
使用 json_verify
工具检查 JSON 文件的有效性:
json_verify < file.json
$ json_verify < file.json
5.1.2. 检索资源列表 复制链接链接已复制到粘贴板!
本节概述了如何将 curl
与 Satellite 6 API 搭配使用,以从 Satellite 请求信息。这些示例包括请求和响应。每个部署都有不同的结果。
5.1.2.1. 列出用户 复制链接链接已复制到粘贴板!
本例是返回 Satellite 资源列表(本例中为 Satellite 用户)的基本请求。此类请求返回嵌套在元数据中的数据列表,而其他请求类型则仅返回实际对象。
API 请求
curl \ --request GET \ --user My_User_Name:My_Password \ https://satellite.example.com/api/users \ | python3 -m json.tool
$ curl \
--request GET \
--user My_User_Name:My_Password \
https://satellite.example.com/api/users \
| python3 -m json.tool
API 响应
5.1.3. 创建和修改资源 复制链接链接已复制到粘贴板!
您可以使用 curl
操作 Satellite 服务器上的资源。对 Satellite 的 API 调用需要 json
格式的数据。如需更多信息,请参阅 第 5.1.1 节 “将 JSON 数据传递给 API 请求”。
5.1.4. 创建用户 复制链接链接已复制到粘贴板!
使用这个流程创建用户。
API 请求
5.1.5. 修改用户 复制链接链接已复制到粘贴板!
这个示例修改 API 请求 中创建的 test_user
的名称和登录。
API 请求