概述
Redfish是一种基于HTTPs服务的管理标准,利用RESTful接口实现设备管理。每个HTTPs操作都以UTF-8编码的JSON的形式,提交或返回一个资源。就像Web应用程序向浏览器返回HTML一样,RESTful接口会通过同样的传输机制(HTTPS),以JSON的形式向客户端返回数据。
当前,整个互联网正逐渐向通用的新软件接口模式发展,Redfish无疑契合了这一趋势。相比之前的技术,它们易于实施、易于使用而且提供了可扩展性优势。Redfish的同一个数据模型既可以用于传统机架安装式服务器、刀片,也可以用于新型系统。此优势源自于数据模型设计用来向客户端自我描述服务功能,而且从一开始便为设计灵活性预留了足够空间。
本文档所有的描述针对的Redfish规范版本为“1.0.2”、Schema版本为“2016.1”。
资源操作
操作 |
说明 |
---|---|
GET资源URI |
返回所请求的资源描述。 |
POST资源URI |
创建新资源或执行指定资源的方法。 |
PATCH资源URI |
修改当前资源属性。 |
DELETE资源URI |
删除指定资源。 |
POST请求提交到新资源所属的资源集合。向代表集合的资源提交POST请求相当于将请求提交到该资源的Members属性。支持将成员添加到集合中的请求支持两种方式。例如,如果客户端在/redfish/v1/EventService/Subscriptions的资源集合中添加一个新成员,它可以发送POST请求到/redfish/v1/EventService/Subscriptions或/redfish/v1/EventService/Subscriptions/Members。
请求头
请求头 |
说明 |
---|---|
Content-Type |
请求消息的格式,用于携带请求消息体的操作。 服务应接受Content-Type设置为application/json或application/json;charset=utf-8。 建议客户端在请求中使用这些值,因为其他值可能导致错误。 |
Odata-Version |
OData版本。如果请求携带不支持的OData版本,服务应拒绝此类请求。 如果服务收到的请求携带不支持的OData版本,应使用HTTP 412状态码拒绝该请求。 |
Origin |
使能Web应用使用Redfish服务并防止CSRF攻击。 |
If-None-Match |
如果资源的ETag与请求头中发送的ETag不匹配,则服务只返回该资源。 如果该请求头中的ETag与资源的ETag匹配,则GET操作返回HTTP 304状态码。 |
If-Match |
为了确保客户端从已知状态更新资源,对于服务返回ETags的资源的PATCH请求必须支持If-Match。 |
X-Auth-Token |
对用户会话进行身份验证。 Token值与随机值不可区分。 如果服务支持此请求头,客户端可以在不建立会话的情况下访问非安全资源。 |
Accept |
与该客户端准备接受的媒体类型或类型的服务器通信。 服务应支持Accept消息头为application/json或application/json;charset=utf-8的资源请求。 服务应支持Accept消息头为application/xml或application/xml;charset=utf-8的元数据请求。 |
Authorization |
用于基本认证。 在支持基本认证的系统中,客户端不需要此请求头就可以访问非安全的资源。 |
响应头
响应头 |
说明 |
---|---|
OData-Version |
描述响应消息中负载所遵守的OData协议版本号。 |
Content-Type |
用于描述消息体所使用的资源表达的媒体类型。 服务在返回JSON资源时,应指定Content-Type为application/json。在返回XML的元数据时,应指定Content-Type为application/xml。如果在请求的Accept头中所选的媒体类型中指定,那么Content-Type后应加上;charset=utf-8。 |
Content-Length |
消息体的大小。 一种使用Transfer-Encoding: chunked,不使用Content-Length来表示消息体大小的方法。 如果服务不支持Transfer-Encoding需要使用Content-Length,则服务应返回状态码411。 |
ETag |
资源的特定版本的标识符,通常是消息摘要。在对ManagerAccount资源的GET请求的响应中应包含ETag头。 |
Link |
按照Link头的子句中的描述返回Link头。 |
Cache-Control |
应支持并指明响应是否可以或不能缓存。 |
Allow |
应返回405(方法不允许)响应以指示请求URL的有效方法。应以任何GET或HEAD操作返回,以指示该资源允许的其他操作。 |
返回状态码
状态码 |
说明 |
---|---|
200 |
请求成功。 |
201 |
资源成功创建。 |
202 |
创建任务执行成功。 |
203 |
服务器已正确处理请求,但返回内容可能不可信任。 |
204 |
请求成功,但响应消息体中不返回内容。 |
205 |
重置内容,通知浏览器清除相关表单信息。 |
301 |
请求的资源归属于不同的URI中。 |
302 |
请求的资源暂时归属于不同的URI中。 |
304 |
服务执行了允许访问的条件GET请求,但资源内容没有改变。 |
305 |
请求者必须使用代理访问请求的网页。 |
400 |
请求非法,客户端侧发生错误并返回错误消息。 |
401 |
无效的用户请求。 |
403 |
服务端拒绝请求。 |
404 |
访问请求资源不存在。 |
405 |
不支持的操作。 |
406 |
请求中指定了Accept头,该请求所标识的资源不能生成与Accept头中包含的某一媒体类型相对应的资源表达。 |
407 |
需要代理授权,指定请求者应当授权使用代理。 |
408 |
请求超时。 |
409 |
请求资源的状态之间存在冲突。 |
410 |
请求的资源对服务不可用,没有转发地址。这种条件被认为是永久的。具有超链接编辑能力的客户端应该在用户批准后删除客户端请求中对URI的引用。如果服务不知道或者没有确定的设施,无论该条件是否永久,都会使用状态代码404(未找到)。除非另有说明,此响应是可缓存的。 |
411 |
请求没有使用Content-Length头(可能是使用Transfer-Encoding: chunked)来指定其内容的长度。寻址的资源需要Content-Length头。 |
412 |
先决条件(如OData-Version、If-Match)检查失败。 |
413 |
请求实体过大,超出服务器处理的能力。 |
415 |
请求为不支持的消息体指定了Content-Type。 |
500 |
服务端内部错误。 |
501 |
所请求的功能当前尚未实现。 |
502 |
服务器作为网关或代理,从上游服务器收到无效响应。 |
503 |
由于服务暂时超载或维护,服务目前无法处理请求。服务可能使用该响应来指示请求URI是有效的,但服务正在对资源进行初始化或其他维护。服务也可以使用该响应来指示服务本身正在进行维护,例如服务重新启动后正在完成初始化。 |
504 |
服务器作为网关或代理,没有及时从上游服务器收到请求。 |
505 |
服务器不支持请求中所用的HTTP协议版本。 |