3.8. 以下链接
API 返回对相关对象的引用作为链接。例如,当检索虚拟机时,它包含到其磁盘附加和网络接口卡的链接:
<vm id="123" href="/ovirt-engine/api/vms/123"> ... <link rel="diskattachments" href="/ovirt-engine/api/vms/123/diskattachments"/> <link rel="nics" href="/ovirt-engine/api/vms/123/nics"/> ... </vm>
这些链接对象的完整描述可通过发送单独的请求来检索 :
GET /ovirt-engine/api/vms/123/diskattachments GET /ovirt-engine/api/vms/123/nics
但在某些情况下,使用 API 检索同一请求中链接的信息更为方便。例如,当额外的网络往返会带来不便的开销时,或者当多个请求以不接受的方式使应用代码变得复杂时,这很有用。对于这些用例,API 提供了一个 以下参数
,它允许应用仅使用一个请求来检索链接的信息。
以下 参数的值
是由逗号分隔的字符串列表。这些字符串各自是链接的对象的路径。例如,要检索磁盘附件和上例中的 NIC,请求应类似如下:
GET /ovirt-engine/api/vms/123?follow=disk_attachments,nics
这将返回类似如下的响应:
<vm id="123" href="/ovirt-engine/api/vms/123"> ... <disk_attachments> <disk_attachment id="456" href="/ovirt-engine/api/vms/123/diskattachments/456"> <active>true</active> <bootable>true</bootable> <interface>virtio_scsi</interface> <pass_discard>false</pass_discard> <read_only>false</read_only> <uses_scsi_reservation>false</uses_scsi_reservation> <disk id="789" href="/ovirt-engine/api/disks/789"/> </disk_attachment> ... </disk_attacments> <nics> <nic id="234" href="/ovirt-engine/api/vms/123/nics/234"> <name>eth0</name> <interface>virtio</interface> <linked>true</linked> <mac> <address>00:1a:4a:16:01:00</address> </mac> <plugged>true</plugged> </nic> ... </nics> ... </vm>
链接对象的路径可以是单个词语,如上例中所示,也可以是一系列词语(用点分隔)来请求嵌套数据。例如,上例使用 disk_attachments
来检索磁盘附加的完整描述,但每个磁盘附加包含一个指向磁盘的链接,而这并未 遵循。要追踪到磁盘的链接,可以使用以下请求:
GET /ovirt-engine/api/vms/123?follow=disk_attachments.disk
这将产生以下响应:
<vm id="123" href="/ovirt-engine/api/vms/123"> <disk_attachments> <disk_attachment id="456" href="/ovirt-engine/api/vms/123/diskattachments/456"> <active>true</active> <bootable>true</bootable> <interface>virtio_scsi</interface> <pass_discard>false</pass_discard> <read_only>false</read_only> <uses_scsi_reservation>false</uses_scsi_reservation> <disk id="789" href="/ovirt-engine/api/disks/789"> <name>mydisk</name> <description>My disk</description> <actual_size>0</actual_size> <format>raw</format> <sparse>true</sparse> <status>ok</status> <storage_type>image</storage_type> <total_size>0</total_size> ... </disk> </disk_attachment> ... </disk_attachments> ... </vm>
路径可根据需要深层进行。例如,也要获取磁盘统计信息:
GET /ovirt-engine/api/vms/123?follow=disk_attachments.disk.statistics
可以组合多个路径元素和多个路径。例如,要获取磁盘附件和网络接口卡,以及它们的统计信息:
GET /ovirt-engine/api/vms/123?follow=disk_attachments.disk.statistics,nics.statistics
几乎所有检索对象的操作都支持 以下参数
,但确保明确检查参考文档,因为某些操作可能不支持它,或者可能会提供有关如何使用它来获取最佳性能的建议。
使用以下 参数
,将开销从客户端移到服务器端。当您请求其他数据时,服务器必须获取并将其与基本数据合并。这在服务器端消耗 CPU 和内存,并且大部分情况下需要额外的数据库查询。这可能会对服务器的性能造成负面影响,特别是在大规模环境中。确保在真实的环境中测试您的应用程序,并且仅
在合理时才使用以下参数。