HTTP 方法详解

一、基础篇

所谓HTTP请求方法就是你提前告诉服务器你要进行什么类型的操作,如同你吃饭前先点菜,告诉餐厅要给你准备做什么样的菜。

一共有8个类型的方法


GET


HEAD


POST


PUT


DELETE


OPTIONS


TRACE


扩展方法

  1. GET

顾名思义,好比小孩子问妈妈要糖果一般,伸手问服务器拿东西。服务器在存在该资源并允许的情况下返回资源,否则返回其他,比如不存在则是404 NOT FOUND

  1. HEAD

HEAD头部,http报文中有一项叫做头部信息,与GET方法类似,同样是问服务器要资源,但是与GET不同的是,http在响应中只会返回实体的首部信息,而不是完完全全地返回实体的主体部分。

因此,这就好比部队打仗前的哨兵探路一般。

HEAD通常用于打探情况,使用HEAD——

  • 你可以在不获取资源的情况下很快地就能了解到资源的情况,比如其类型,其文件大小,
  • 也可以通过响应码查看是否存在该资源,
  • 也可以检测资源是否被修改了。
  1. PUT

与GET恰好相反,收获前得先付出。
PUT方法就用于向服务器提交东西,上传东西,写入修改东西。

  1. POST

POST用于向服务器提供表单数据。

  1. DELETE

就是删除,请求服务器删除请求URL中指定的资源。

  1. OPTIONS

选项,因此该方法就是请求服务器告知客户端其所能支持的方法。由于后面HTTP提供给开发者一个扩展方法的权利。并且这个七个方法中不是每一个方法服务器都会支持实现,取决于服务器开发者。

好比于点菜前我们需要问餐厅要的餐单,看看其提供什么菜色。

一般来说,服务器会返回其所支持的方法。

  1. TRACE

TRACE为追溯,就是追根溯源的意思。

我们点餐时可能是以口头方式告诉服务员,然后服务员告诉大厨,这传递的过程中可能由于口误或者听错等原因修改了传递的信息。

同理,当客户端向服务器发起一个请求时,这个请求可能需要穿过防火墙,代理,网关等中间节点才能到达服务器,这些中间节点有权修改原始的HTTP请求,那么HTTP允许客户端发起这样一个请求,让服务器返回一条最终达到服务器的请求给客户端,好让客户端知道自己的原始请求是否被修改了,修改了哪些地方。

(8)扩展方法

因为上述七个方法尽管已经满足基本要求了,但是仍然会有特殊情况所不能满足。因此扩展方法就是在HTTP1.1规范中没有定义的方法,因此HTTP允许开发者自定义一些市实现方法。比如LOCK,MOVE
,COPY 等等。

二、番外篇-关于
PUT
POST的区别

在HTTP官方定义中

The POST method is used to request thatthe
origin server accept the entity enclosed in the request as a newsubordinate of the resource identified by the Request-URI in
the Request-Line

POST方法是用在请求中的,起源服务器把请求中的实体内容作为请求URI在请求行所指定的资源的下属资源。

The PUT method requests that the enclosedentity
be stored under the supplied Request-URI. If the Request-URI refers
to an already existing resource, the enclosedentity SHOULD be considered as a modified version of the one residing on theorigin server. If the Request-URI does
not point to an existing resource, and that URI iscapable of being defined as a new resource by the requesting user agent, theorigin server can create the resource with that URI."

PUT方法则是要求被封装的实体是存储在请求URI指定的地方。

如果请求的URI指向已经存在的资源,那么封装的实体应该被视为驻留在原始服务器上实体的修改后的版本。

而在stackOverFlow上的讨论也趋向于这么一个观点:

PUT是幂等的,所谓幂等就是重复操作是否会导致一样的结果,在下面英文中进行了举例,比如x
= 5就是幂等的,你执行多少次都是没关系,结果一样,但是 x++就不是,执行每次的结果都不一样。PUT就是幂等的。

PUT implies putting a resource -completely replacing whatever is available at the given URL with a differentthing.
By definition, a PUT is idempotent. Do it as many times as you like, andthe result is the same. x=5 isidempotent. You can PUT a resource whether it previously
exists, or not (eg, toCreate, or to Update)!

POST updates a resource, adds asubsidiary resource, or causes a change. A POST is not idempotent, in the waythat x++ is
not idempotent.

注:出处是http://stackoverflow.com/questions/630453/put-vs-post-in-rest

个人理解:PUT和 POST都可以用来创建服务器上的资源,并进行修改,但是如何选择使用,取决于使用POST的时候,重复请求会不会造成不同的结果,如果是那么就必须使用PUT。如果不是,那么用PUT和
POST都没关系咯。

时间: 2024-10-05 19:39:43

HTTP 方法详解的相关文章

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

Python数据类型及其方法详解

Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知识回顾. 一.整型和长整型 整型:数据是不包含小数部分的数值型数据,比如我们所说的1.2.3.4.122,其type为"int" 长整型:也是一种数字型数据,但是一般数字很大,其type为"long" 在python2中区分整型和长整型,在32位的机器上,取值范围是-2

【转】深入学习JavaScript: apply call方法 详解(转)

Js apply方法详解 原文:http://blog.csdn.net/myhahaxiao/article/details/6952321 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享..  如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和cal

hbase-0.94安装方法详解

先决条件: 1)java环境,需要安装java1.6以上版本 2)hadoop环境,由于HBase架构是基于其他文件存储系统的,因此在分布式模式下安装Hadoop是必须的,但是,如果运行在单价模式下,此条件可以省略.Hadoop-1.2.1的安装方法参考 hadoop-1.2.1安装方法详解 注意:安装时要注意Hadoop和HBase之间的版本关系,如果不匹配,很可能会影响HBase系统的稳定性. 本帖教程采用的hadoop是hadoop-1.2.1,hbase采用的是hbase-0.94 hb

oc中字典的实现方法详解

一:字典的基本概念 Foundation中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样. 通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的. 此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象 二:不可变字典-NSDictionary 1:初始化(以一个元素和多个元素

57. 数对之差的最大值:4种方法详解与总结[maximum difference of array]

[本文链接] http://www.cnblogs.com/hellogiser/p/maximum-difference-of-array.html [题目] 在数组中,数字减去它右边的数字得到一个数对之差.求所有数对之差的最大值.例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果. [分析] 看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果.这种思路忽略了题目中很重要的一点:数对之差

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法

查看登陆系统用户的信息的三种方法详解

查看登陆系统用户的信息的三种方法详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.who这个命令显示可以谁在登陆,但是这个有很多的花式玩法,这个命令超简单 语法:who [OPTION]... [ FILE | ARG1 ARG2 ] 1.参数:-u,显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串. 例如: 2.参数:-m,此参数的效果和指定"a

HTTP请求方法详解

HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源]     GET方法用来请求已被URI识别的资源.指定的资源经服务器端解析后返回响应内容(也就是说,如果请求的资源是文本,那就保持原样返回:如果是CGI[通用网关接口]那样的程序,则返回经过执行后的输出结果).     最常用于向服务器查询某些信息.必要时,可以将查询字符串参数追加到URL末尾,以便将信息发送给服务器.     使用GET请求时经常会发

css网页中设置背景图片的方法详解

css网页中设置背景图片的方法详解 在css代码中设置背景图片的方法,包括背景图片.背景重复.背景固定.背景定位等 用css设置网页中的背景图片,主要有如下几个属性: 1,背景颜色 {background-color:数值}2,背景图片 {background-image: url(URL)|none}3,背景重复 {background-repeat:inherit|no-repeat|repeat|repeat-x|repeat-y}4,背景固定 {background-attachment