对象引用和访问
可以通过多种不同方式引用和访问通过 ONTAP REST API 公开的资源实例或对象。
对象访问路径
笼统来看,在访问对象时有两种路径类型:
主要
对象是 API 调用的主要或直接目标。
外部
对象不是 API 调用的主要引用,而是从主对象链接到此对象。因此,它是外部或下游对象,并通过主对象中的字段引用。
使用 UUID 访问对象
在创建每个对象时都会为其分配唯一的标识,在大多数情况下,这是一个 128 位的 UUID。分配的 UUID 值不可改变,在 ONTAP 内部用于访问和管理资源。因此,UUID 通常是访问对象最快和最稳定的方式。
对于许多资源类型,可以将 UUID 值作为 URL 路径键值的一部分提供以访问特定对象。例如,可以使用以下路径访问节点实例:/cluster/nodes/{uuid}
使用对象属性访问对象
除了 UUID 之外,还可以使用对象属性来访问对象。在大多数情况下,使用 name 属性很方便。例如,可以在 URL 字符串中使用以下查询参数来按名称访问节点实例:/cluster/nodes?name=node_one。除了查询参数之外,还可以通过主对象中的属性访问外部对象。
虽然可以使用名称或其他属性代替 UUID 访问对象,但这样做有几个可能的缺点:
名称字段并非不可变,是可以更改的。如果在访问对象之前更改了对象的名称,则会返回错误的对象或导致对象访问失败错误。
注在外部对象上使用 POST 或 PATCH 方法或在主对象上使用 GET 方法时,可能会发生此问题。ONTAP 必须将名称字段转换为相应的 UUID。这是一种间接访问类型,可能会成为性能问题。
特别是在满足以下一个或多个条件时,性能可能会降低:
使用 GET 方法
访问大量对象
使用复杂或精心制作的查询
集群与 SVM 上下文
有几个 REST 端点同时支持集群和 SVM。使用此类端点时,可以通过 scope=[svm|cluster] 值指示 API 调用的上下文。支持双上下文的端点示例包括 IP 接口和安全角色。
在对象集合上使用 PATCH 和 DELETE
在资源实例上支持 PATCH 或 DELETE 方法的每个 REST 端点也在对象集合上支持相同的方法。唯一的要求是必须通过 URL 字符串中的查询参数提供至少一个字段。在集合上发出 PATCH 或 DELETE 时,相当于在内部执行以下操作:
执行基于查询的 GET 来检索集合
对集合中的每个对象执行串行的 PATCH 或 DELETE 调用序列
可以通过 return_timeout 设置操作的超时时间,默认值为 15 秒。如果在超时之前未完成操作,则响应会包括指向下一个对象的链接。必须使用下一个链接重新发出相同的 HTTP 方法才能继续操作。