RESTful API方法; 头和选项
我正在为PHP中的应用程序编写一个RESTful API模块,在动词HEAD
和OPTIONS
上我有点混杂。
OPTIONS
用于检索给定资源的可用HTTP动词?HEAD
用于确定给定资源是否可用?
如果有人能澄清*这些动词,那将是非常感激。
*澄清是关于重用HTTP动词的RESTful API体系结构。 我已经认识到HEAD
和OPTIONS
不应该被重新使用,而是像任何HTTP应用程序那样performance可预测性。 哦,2年后我们如何成长。
按照: http : //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
9.2选项
OPTIONS方法代表请求关于在请求/响应链上可用的通信选项的信息。 此方法允许客户端确定与资源相关的选项和/或需求或服务器的function,而不会暗示资源操作或启动资源检索。
对此方法的响应不可caching。
如果OPTIONS请求包含实体主体(由Content-Length或Transfer-Encoding表示),则媒体types必须由Content-Type字段指示。 尽pipe这个规范并没有为这样的实体定义任何用途,但将来的HTTP扩展可能会使用OPTIONS主体在服务器上进行更详细的查询。 不支持这种扩展的服务器可能会丢弃请求主体。
如果Request-URI是星号(“*”),则OPTIONS请求通常用于服务器,而不是用于特定的资源。 由于服务器的通信选项通常取决于资源,因此“*”请求只能用作“ping”或“no-op”types的方法。 除了允许客户端testing服务器的function之外,它什么都不做。 例如,这可以用来testing代理是否符合HTTP / 1.1(或缺乏)。
如果Request-URI不是星号,则OPTIONS请求仅适用于与该资源通信时可用的选项。
一个200响应应该包括任何表示由服务器实现的适用于该资源的可选特征(例如,允许)的头字段,可能包括本规范未定义的扩展。 响应主体(如果有)还应该包含有关通信选项的信息。 这个体的格式不是由这个规范定义的,但是可以通过将来对HTTP的扩展来定义。 内容协商可以用来select适当的响应格式。 如果没有响应主体,响应必须包含一个字段值为“0”的内容长度字段。
Max-Forwards请求头域可以用来在请求链中定位一个特定的代理。 当一个代理收到一个允许请求转发的absoluteURI的OPTIONS请求时,代理务必检查一个Max-Forwards字段。 如果Max-Forwards字段值为零(“0”),则代理不能转发该消息; 相反,代理应该用自己的通信选项进行响应。 如果Max-Forwards字段值是一个大于零的整数,那么代理在转发请求时必须递减字段值。 如果请求中没有Max-Forwards字段,则转发的请求不能包含Max-Forwards字段。
9.4 HEAD
HEAD方法与GET相同,只是服务器不能在响应中返回消息体。 响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求发送的信息相同。 这个方法可以用来获得有关请求隐含的实体的元信息,而不用传递实体主体本身。 此方法通常用于testing超文本链接的有效性,可访问性和最近的修改。
对于HEAD请求的响应可能是可caching的,因为响应中包含的信息可能被用来从该资源更新先前caching的实体。 如果新字段值指示caching的实体不同于当前的实体(如通过Content-Length,Content-MD5,ETag或Last-Modified中的改变所指示的那样),则caching必须将caching条目视为陈旧的。
OPTIONS告诉你诸如“这个资源允许哪些方法”。
如果您发出GET请求,HEAD将获取您将获得的HTTP标头,但没有正文。 这可以让客户端确定caching信息,将返回哪些内容types,将返回什么状态代码。 可用性只是其中的一小部分。