ONTAP Select 的请求和响应 API 事务
每个 Deploy API 调用都作为对 Deploy 虚拟机的 HTTP 请求执行,该虚拟机生成对客户端的关联响应。此请求/响应对被视为 API 事务。在使用 Deploy API 之前,您应该熟悉可用于控制请求的输入变量和响应输出的内容。
控制 API 请求的输入变量
您可以通过在 HTTP 请求中设置的参数来控制如何处理 API 调用。
请求标头
您必须在 HTTP 请求中包含多个标头,包括:
-
content-type 如果请求正文包含 JSON,则必须将此标头设置为 application/json。
-
accept 如果响应正文将包含 JSON,则必须将此标头设置为 application/json。
-
authorization 必须使用 base64 字符串编码的用户名和密码设置基本身份验证。
请求正文
请求正文的内容因特定调用而异。HTTP 请求正文由以下内容之一组成:
-
具有输入变量的 JSON 对象(例如,新集群的名称)
-
空
筛选对象
在发布使用 GET 的 API 调用时,可以根据任何属性来限制或筛选返回的对象。例如,您可以指定要匹配的确切值:
<field>=<query value>
除了精确匹配之外,还有其他运算符可用于返回一系列值范围内的一组对象。ONTAP 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 状态代码
下面介绍 Deploy 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指示记录数量,records 包含对象实例数组。例如,您可以检索特定集群中定义的所有节点。 -
Job 对象如果异步处理 API 调用,则返回一个 Job 对象,该对象锚定后台任务。例如,用于部署集群的 POST 请求是异步处理的,并返回 Job 对象。
-
Error 对象如果发生错误,则始终返回 Error 对象。例如,当您尝试使用已存在的名称创建集群时,您将收到一个错误。
-
空 在某些情况下,不会返回任何数据,并且响应正文为空。例如,使用 DELETE 删除现有主机后,响应正文为空。