Redfish API 通用说明
1 命令格式说明
1.1 命令组成
Redfish 命令由请求动作和 URI 两部分组成。通用请求动作如下:
| 请求动作 | 含义 |
|---|---|
GET | 获取或查询资源。 |
POST | 创建资源或提交操作。 |
PATCH | 更新或修改已有设置。 |
DELETE | 删除资源。 |
具体接口是否支持某种请求动作,以对应接口的说明为准。
1.2 URI 格式
设备使用的 URI 通常为:
https://<device-ip>/redfish/v1/<path>
URI 由以下三部分组成:
| 部分 | 示例 | 说明 |
|---|---|---|
| URI 地址 | https://<device-ip> | <device-ip> 为待访问服务器的 HDM IPv4 或 IPv6 地址。 |
| 服务和版本 | /redfish/v1/ | 当前设备 Redfish 服务使用 redfish v1 版本。 |
| 资源路径 | <path> | 要访问的唯一资源路径。 |
文档中的花括号表示动态参数,调用时必须替换为实际值。例如:
/redfish/v1/Systems/{SystemId}
应将 {SystemId} 替换为设备返回的实际系统标识。例如,当前设备的系统资源合集可能返回 bmc、sub01 等标识,对应的访问路径如下:
/redfish/v1/Systems/bmc
/redfish/v1/Systems/sub01
bmc 和 sub01 仅为当前设备的示例值,实际标识应以 /redfish/v1/Systems 响应中的 Members[].@odata.id 为准。URI、属性名和枚举值区分大小写。
部分请求还需要请求参数。请求参数由请求头和请求体组成,具体内容以对应接口说明为准;其中路径参数应替换为接口响应中返回的实际标识。
2 OData 属性说明
Redfish 输出信息使用 OData 属性描述资源的访问地址、类型和上下文等信息。
| 属性 | 说明 |
|---|---|
@odata.context | 描述资源上下文的 URL。 |
@odata.id | 资源的唯一标识符,也是访问当前资源或关联资源的 URI。 |
@odata.type | 指定资源类型的绝对 URL 或资源类型描述。 |
示例:
{
"@odata.context": "/redfish/v1/$metadata#ServiceRoot.ServiceRoot",
"@odata.id": "/redfish/v1/",
"@odata.type": "#ServiceRoot.v1_1_1.ServiceRoot"
}
资源是否包含其他属性取决于资源类型和设备能力。客户端应以实际响应和对应资源定义为准,不要假设所有资源都包含相同字段。
3 状态码说明
| 状态码 | 说明 |
|---|---|
200 | 请求成功。 |
201 | 创建成功。 |
202 | 创建任务执行成功。对于异步操作,还应根据响应中的任务信息查询任务状态。 |
204 | 请求成功,无内容返回。客户端不要尝试解析 JSON 响应体。 |
400 | 请求非法,客户端侧发生错误并返回错误消息。 |
401 | 无效的用户请求,通常表示认证信息无效或缺失。 |
403 | 服务端拒绝请求,通常表示当前用户没有执行该操作的权限。 |
404 | 请求访问的资源不存在。 |
405 | 不支持的操作。 |
409 | 请求资源的状态之间存在冲突。 |
412 | 先决条件检查失败,例如 OData-Version 或 If-Match 检查失败。 |
500 | 服务端内部错误。 |
501 | 所请求的功能当前尚未实现。 |
客户端应同时检查 HTTP 状态码和响应体中的业务信息。对于异步操作,收到 202 后应根据响应返回的任务 URI 查询任务执行结果;发生错误时,应优先读取 Redfish 错误消息中的详细信息。
4 其它说明
| 特殊值 | 说明 |
|---|---|
N/A | 表示字段值无法获取,或无法确认结果。 |
NULL | 表示字段值不支持,获取为空。 |
这些值与 JSON 的 null 不一定等价。客户端应根据字段定义和具体接口说明进行处理。