第 4 章 使用不同语言的 API 请求
本章概述了使用 curl、Ruby 和 Python 向 Red Hat Satellite 发送 API 请求,并提供了示例。
4.1. 使用 curl 的 API 请求
本节概述了如何将
curl
与 Satellite API 搭配使用来执行各种任务。
Red Hat Satellite 需要使用 HTTPS,默认是主机识别的证书。如果您还没有添加 Satellite 服务器证书,如
第 3.1 节 “SSL 验证概述”
所述,您可以使用
--insecure
选项绕过证书检查。
对于用户身份验证,您可以使用
--user
选项以
--user
username:password
格式提供 Satellite 用户凭据,或者如果您不包含密码,则命令会提示您输入它。要降低安全风险,请不要将密码包含在命令中,因为它会成为 shell 历史记录的一部分。本节中的示例仅包含简单性的密码。
请注意,如果您使用
--silent
选项,
curl
不会显示进度量表或任何错误消息。
本章中的示例使用 Python
json.tool
模块来格式化输出。
4.1.1. 将 JSON 数据传递给 API 请求
您可以使用 API 请求将数据传递给 Satellite 服务器。数据必须采用 JSON 格式。使用
--data
选项指定 JSON 数据时,您必须使用
--header
选项设置以下 HTTP 标头:
--header "Accept:application/json" \ --header "Content-Type:application/json"
使用以下选项之一包含带有
--data
选项的数据:
以大括号
{}
括起的带引号的 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\"}}"}}
不加引号的 JSON 格式数据包含在文件中,并由
@
符号和文件名指定。例如:
--data @file.json
将外部文件用于 JSON 格式的数据有以下优点: 您可以使用您首选的文本编辑器。 您可以使用语法检查程序来查找和避免错误。 您可以使用工具来检查 JSON 数据的有效性或重新格式化。