注意,并不是每个服务器都实现了所有的方法。如果一台服务器要与 HTTP 1.1 兼容,那么只要为其资源实现 GET 方法和 HEAD 方法就可以了。
GET
GET 是最常见的方法。通常用于请求服务器发送某个资源。HTTP/1.1 要求服务器实现此方法。
HEAD
HEAD 方法与 GET 方法的行为很类似,但服务器在响应中只返回首部。不会返回实体的主体部分。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查。
- 在不获取资源的情况下了解资源的情况(比如,判断其类型);
- 通过查看响应中的代码,看看某个对象是否存在;
- 通过查看首部,测试资源是否被修改了。
PUT
与 GET 从服务器读取文档相反,PUT 方法会向服务器写入文档。有些发布系统允许用户创建 Web 页面,并用 PUT 直接将其安装到 Web 服务器上去。
PUT 方法的语义就是让服务器用主体部分来创建一个由所请求的 URL 命名的文档,或者,如果那个 URL 已经存在的话,就用这个主体来替代它。
POST
POST 方法起初是用来向服务器输入数据的。实际上,通常用它来支持 HTML 的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到它要去的地方(比如,送到一个服务器网关程序中,然后由这个程序对其进行处理)。
TRACE
客户端发起一个请求时,这个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的 HTTP 请求。TRACE 方法允许客户端在最终将请求发送给服务器时,看看它变成了什么样子。
TRACE 方法主要用于诊断;也就是说,用于验证请求是否如愿穿过了请求 / 响应链。它也是一种很好的工具,可以用来查看代理和其他应用程序对用户请求所产生效果。
TRACE 请求中不能带有实体的主体部分。TRACE 响应的实体主体部分包含了响应服务器收到的请求的精确副本。
OPTIONS
OPTIONS 方法请求 Web 服务器告知其支持的各种功能。可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法。
DELETE
顾名思义,DELETE 方法所做的事情就是请服务器删除请求 URL 所指定的资源,但是客户端应用程序无法保证删除操作一定会被执行。因为 HTTP 规范允许服务器在不通知客户端的情况下撤销请求。
扩展方法
HTTP 被设计成字段可扩展的,这样新的特性就不会使老的软件失效了。扩展方法指的就是没有在 HTTP/1.1 规范中定义的方法。服务器会为它所管理的资源实现一些 HTTP 服务,这些方法为开发者提供了一种扩展这些 HTTP 服务能力的手段。 下表列出了一些厂家的扩展方法实例。这些方法就是 WebDAV HTTP 扩展包含的所有方法,这些方法有助于通过 HTTP 将 Web 内容发布到 Web 服务器上去。
方法 | 描述 |
LOCK | 允许用户“锁定”资源——比如,可以在编辑某个资源的时候将其锁定,以防止别人同时对其进行修改 |
MKCOL | 允许用户创建资源 |
COPY | 便于在服务器上复制资源 |
MOVE | 在服务器上移动资源 |
并不是所有的扩展方法都是在正是规范中定义的,认识到这一点很重要。如果可能被破坏端到端行为则应以 501 Not Implemented(无法实现)状态吗进行响应。