您的位置:首页 > 理论基础 > 计算机网络

HTTP中GET和POST的区别

2016-07-06 20:48 459 查看
原文链接:http://blog.csdn.net/gideal_wang/article/details/4316691

1、一个URL地址,它用于描述一个网络上的资源,而HTTP定义了浏览器和服务器交互的4种基本方法:GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。GET一般用于获取/查询 资源信息,而POST一般用于更新资源信息

2、虽然4种基本的方法各自有着不同的用法,但是但在实际的做的时候,很多人却没有按照HTTP规范去做,导致这个问题的原因有很多,比如说:

  a.很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点。

  b.对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。

  c.另外一个是,早期的但是Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计。

d.还有一个较为严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法。

3、HTTP请求的格式

<request line>

<headers>

<blank line>

<request-body>

在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。

紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。

在首部之后是一个空行,再此之后可以添加任意的其他数据(称之为主体(body))。

示例:

GET请求:

GET /DEMOWebServices2.8/Service.asmx/CancelOrder?UserID=string&PWD=string&OrderConfirmation=string HTTP/1.1

Host: api.efxnow.com

POST请求:

POST /DEMOWebServices2.8/Service.asmx/CancelOrder HTTP/1.1

Host: api.efxnow.com

Content-Type: application/x-www-form-urlencoded

Content-Length: length

UserID=string&PWD=string&OrderConfirmation=string

GET提交,请求的数据会附在URL之后(就是把数据放置在请求行(request line)中),以?分割URL和传输数据,多个参数用&连接;

POST提交:把提交的数据放置在是HTTP包的包体中。

4、HTTP返回的格式

status line>

<headers>

<blank line>

[<response-body>]

两个请求的返回

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

示例:

<?xml version="1.0" encoding="utf-8"?>

<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">

<Success>boolean</Success>

<ErrorDescription>string</ErrorDescription>

<ErrorNumber>int</ErrorNumber>

<CustomerOrderReference>long</CustomerOrderReference>

<OrderConfirmation>string</OrderConfirmation>

<CustomerDealRef>string</CustomerDealRef>

</objPlaceOrderResponse>

在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。

常见的返回码:

200 (OK): 找到了该资源,并且一切正常。

304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。

401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。

403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。

404 (NOT FOUND): 在指定的位置不存在所申请的资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: