ONTAP Select的请求和响应 API 事务
每个 Deploy API 调用都会以 HTTP 请求的形式发送到 Deploy 虚拟机,并生成一个相关的响应返回给客户端。此请求/响应对被视为一次 API 事务。在使用 Deploy API 之前,您应该熟悉可用于控制请求的输入变量以及响应输出的内容。
控制 API 请求的输入变量
您可以通过 HTTP 请求中设置的参数来控制如何处理 API 调用。
请求标头
您必须在 HTTP 请求中包含几个标头,其中包括:
-
content-type 如果请求主体包含 JSON,则此标头必须设置为 application/json。
-
accept 如果响应主体将包含 JSON,则此标头必须设置为 application/json。
-
授权必须使用以 base64 字符串编码的用户名和密码设置基本身份验证。
请求正文
请求主体的内容根据具体调用而有所不同。HTTP请求主体由以下之一组成:
-
带有输入变量的 JSON 对象(例如,新集群的名称)
-
空
过滤对象
发出使用 GET 的 API 调用时,您可以根据任意属性限制或过滤返回的对象。例如,您可以指定要匹配的精确值:
<field>=<query value>
除了完全匹配之外,还有其他运算符可用于返回一组包含特定值范围的对象。ONTAPONTAP Select支持以下筛选运算符。
运算符 | 描述 |
---|---|
= |
等于 |
< |
少于 |
> |
大于 |
⇐ |
小于或等于 |
>= |
大于或等于 |
或 |
|
! |
不等于 |
* |
贪婪通配符 |
您还可以通过使用 null 关键字或其否定(!null)作为查询的一部分,根据特定字段是否设置来返回一组对象。
选择对象字段
默认情况下,使用 GET 发出 API 调用仅返回唯一标识一个或多个对象的属性。这组最小字段将充当每个对象的键,并根据对象类型而有所不同。您可以使用 fields 查询参数通过以下方式选择其他对象属性:
-
廉价字段指定 `fields=*`检索在本地服务器内存中维护或几乎不需要处理即可访问的对象字段。
-
昂贵字段指定 `fields=**`检索所有对象字段,包括那些需要额外的服务器处理才能访问的字段。
-
自定义字段选择使用 `fields=FIELDNAME`指定您想要的确切字段。请求多个字段时,必须使用逗号分隔值,且不能使用空格。
|
作为最佳实践,您应该始终识别所需的特定字段。您应仅在需要时检索廉价或昂贵字段集。廉价和昂贵的分类由NetApp根据内部性能分析确定。给定字段的分类可能随时更改。 |
对输出集中的对象进行排序
资源集合中的记录将按照对象定义的默认顺序返回。您可以使用 order_by 查询参数,并附带字段名称和排序方向来更改顺序,如下所示:
order_by=<field name> asc|desc
例如,您可以按降序对类型字段进行排序,然后按升序对 id 进行排序:
order_by=type desc, id asc
当包含多个参数时,必须用逗号分隔字段。
分页
使用 GET 方式发出 API 调用来访问相同类型的对象集合时,默认返回所有匹配的对象。如有需要,您可以使用请求中的 max_records 查询参数来限制返回的记录数。例如:
max_records=20
如果需要,您可以将此参数与其他查询参数组合使用,以缩小结果集。例如,以下内容返回在指定时间之后生成的最多 10 个系统事件:
time⇒ 2019-04-04T15:41:29.140265Z&max_records=10
您可以发出多个请求来分页浏览事件(或任何对象类型)。每个后续 API 调用都应根据最后一个结果集中的最新事件使用新的时间值。
解释 API 响应
每个 API 请求都会生成一个响应返回给客户端。您可以检查该响应以确定请求是否成功,并根据需要检索其他数据。
HTTP 状态代码
下面描述了部署 REST API 使用的 HTTP 状态代码。
代码 | 含义 | 描述 |
---|---|---|
200 |
确定 |
表示没有创建新对象的调用成功。 |
201 |
已创建 |
对象已成功创建;位置响应标头包含该对象的唯一标识符。 |
202 |
已接受 |
已启动长时间运行的后台作业来执行请求,但操作尚未完成。 |
400 |
错误的请求 |
请求输入无法识别或不合适。 |
403 |
禁止 |
由于授权错误,访问被拒绝。 |
404 |
未找到 |
请求中引用的资源不存在。 |
405 |
方法不允许 |
该资源不支持请求中的 HTTP 动词。 |
409 |
冲突 |
尝试创建对象失败,因为该对象已存在。 |
500 |
内部错误 |
服务器发生一般内部错误。 |
501 |
未实施 |
URI 已知但无法执行请求。 |
响应标头
Deploy 服务器生成的 HTTP 响应中包含几个标头,包括:
-
request-id 每个成功的 API 请求都会分配一个唯一的请求标识符。
-
位置 当创建一个对象时,位置标头包含新对象的完整 URL,其中包括唯一对象标识符。
响应正文
与 API 请求相关的响应内容会根据对象、处理类型以及请求的成功或失败而有所不同。响应主体以 JSON 格式呈现。
-
单个对象:可以根据请求返回包含一组字段的单个对象。例如,您可以使用 GET 操作,通过唯一标识符检索集群的选定属性。
-
多个对象 可以返回资源集合中的多个对象。在所有情况下,都使用一致的格式, `num_records`指示记录数以及包含对象实例数组的记录。例如,您可以检索特定集群中定义的所有节点。
-
Job 对象如果 API 调用是异步处理的,则会返回一个 Job 对象,该对象用于锚定后台任务。例如,用于部署集群的 POST 请求是异步处理的,并返回一个 Job 对象。
-
错误对象 如果发生错误,始终会返回一个 Error 对象。例如,当您尝试创建一个名称已存在的集群时,就会收到错误。
-
空 某些情况下,没有返回任何数据,响应体为空,例如使用 DELETE 删除一个已经存在的主机,响应体为空。