通信(1)----Http协议的方法讲解
Http协议的方法讲解
HTTP协议请求相应中有8个不同的请求方法:分别是Get、POST、HEAD、PUT、DELETE、OPTIONS、TRACE和CONNECT;
1. GET方法
- 它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。
- GET请求中,永远不会包含呈现数据。
来看一个GET请求头:
- GET /C/9/5/1_kfanning.jpg HTTP/1.1
- Host: avatar.csdn.net
- User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
- Accept: image/png,image/*;q=0.8,*/*;q=0.5
- Accept-Language: zh-tw,zh-cn;q=0.8,zh;q=0.6,en-us;q=0.4,en;q=0.2
- Accept-Encoding: gzip, deflate
- Referer: http://blog.csdn.net/kfanning/article/details/6062118
- Cookie: __utma=17226283.527580837.1375760870.1390443382.1390449326.168;
- __utmz=17226283.1390449326.168.129.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=http%20method;
- __gads=ID=9b9423f364ccda56:T=1375762746:S=ALNI_MZ1Sxf9s2CJPA7xqkv_IqcSTDxWKA; UN=jeckykang;
- uuid_tt_dd=-3422551472986240703_20131209; __message_sys_msg_id=2270; __message_gu_msg_id=0;
- __message_cnel_msg_id=0; __message_in_school=0; lzstat_uv=14049921881443061361|2955225;
- CloudGuest=Q/26rJhRxgVBdK86B7bhjJs74GajISRoJhW4uOXM5dxyb18V1goLQAla2v8nTchg1rOz5XFIaB6cqf+0KWjq8EV+c2Sr
- /G77BZ74uhwyR6SrrtMkWnpIpFOUsgdSVr/IyJQhuouLZ9mlbFMvdJu0A1m2dav+lJex1dxxHYFEB9FRt7ALVYxi/jxLcZzSjQ6j;
- _JQCMT_ifcookie=1; _JQCMT_browser=0654c777635ddcb3e6c316847e59c812; CloudSiteTheme=Default;
- __message_district_code=310000; UserName=jeckykang; UserInfo=VBm2%2f0wC5LAQ3FbSGMzLl9N53e%2bSM4sIblk33N
- ACXRqaIh8WQkLSDEHD5bO0u3PvsfxZDCGq%2fR3oap%2bcDj7UJ2LgWwF2xDtN2LXlEx9Rzo1SUGNqHTSk22U5RJ7PLH1l;
- UserNick=IronRabbit; access-token=0f5903c1-6ec0-42ad-905f-4db4cd247819; AU=065; __utmc=17226283;
- BAIDU_DUP_lcr=http://www.baidu.com/; dc_tos=mzu62s; dc_session_id=-bjdkmd|12; __utmb=17226283.4.10.1390449326
- Connection: keep-alive
上面第一行:请求方法(GET),URL,协议,版本。这是它的结构。
2. POST方法
- 向URL指定的资源提交数据或附加新的数据。
一般来说,提交表单数据都用POST方法。从如下列表中可以看到GET和POST的区别:
3. PUT方法
- 跟POST方法很像,也是向服务器提交数据。但是,它们之间有不同。PUT指定了资源在服务器上的位置,而POST没有。PUT方法请求服务器去把请求里的实体存储在请求
- URI(Request-URI)标识下。如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源
- 实体的最新修改版本。如果请求RI(Request-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此
- URI所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent)发送201(已创建)响应。如果已存在的资源被改变了,那么源服务器应
- 该发送200(Ok)或者204(无内容)响应。如果资源不能根据请求URI创建或者改变,一个合适的错误响应应该给出以反应问题的性质。实体的接收者不能忽略任何它不
- 理解和不能实现的Content-*(如:Content-Range)头域,并且必须返回501(没有被实现)响应。如果请求穿过一个缓存(cache),并且此请求
- URI(Request-URI)指示了一个或多个当前缓存的实体,那么这些实体应该被看作是旧的。PUT方法的响应是不可缓存的。POST方法和PUT方法请求最根本的区别是请
- 求URI(Request-URI)的含义不同。POST请求里的URI 指示一个能处理请求实体的资源(译注:此资源可能是一段程序,如jsp 里的servlet) 。
- 此资源可能是一个数据接收过程,一个网关(gateway,译注:网关和代理的区别是:网关可以进行协议转换,而代理不能,只是起代理的作用,比如缓存服务器其实就
- 是一个代理),或者一个单独接收注释的实体。对比而言,PUT方法请求里的URI标识请求里封装的实体一一用户代理知道URI意指什么,并且服务器不能把此请求应用于
- 其它资源(resource)。如果服务器期望请求被应用于一个不同的URI,那么它必须发送301(永久移动)响应;用户代理可以自己决定是否重定向请求。一个单独的资
- 源可能会被许多不同的URI指定。如:一篇文章可能会有一个URI指定当前版本,而这个URI区别于这篇文章其它特殊版本的URI。这种情况下,对一个通用URI的PUT请求
- 可能会导致其资源的其它URI请求被源服务器重定义。HTTP/1.1没有定义PUT方法对源服务器的状态影响。PUT请求必须遵循8.2节中的消息传送的要求。除非特别指出,
- PUT方法请求里的实体头域应该被用于资源的创建或修改。
4. HEAD方法
- 只请求页面的首部。
5. DELETE方法
- 删除服务器上的某资源。
6. OPTIONS方法
- 它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息。
以上6种方法中的4种可以和数据库的CRUD操作对应起来:
- Create: PUT
- Read: GET
- Update: POST
- Delete: DELETE
7. TRACE方法
- TRACE方法被用于激发一个远程的,应用层的请求消息回路(译注:TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,
- 这就是一个请求响应回路)。
- 最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。TRACE请求不能包含一个实体。TRACE方法允许客户端去了
- 解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。Via头域值有特殊的用途,因为它可以作为请求链的跟踪信息。
- 利用Max-Forwards头域允许客户端限制请求链的长度,这是非常有用的,因为可以利用此去测试代理链在无限循环里转发消息。如果请求是有效的,响应应
- 该在实体主体里包含整个请求消息,并且响应应该包含一个Content-Type头域值为”message/http”的头域。此方法的响应不能被缓存。
8. CONNECT方法
- 把请求连接转换到透明的TCP/IP通道。
Http协议的方法讲解
HTTP协议请求相应中有8个不同的请求方法:分别是Get、POST、HEAD、PUT、DELETE、OPTIONS、TRACE和CONNECT;
1. GET方法
- 它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。
- GET请求中,永远不会包含呈现数据。
来看一个GET请求头:
- GET /C/9/5/1_kfanning.jpg HTTP/1.1
- Host: avatar.csdn.net
- User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
- Accept: image/png,image/*;q=0.8,*/*;q=0.5
- Accept-Language: zh-tw,zh-cn;q=0.8,zh;q=0.6,en-us;q=0.4,en;q=0.2
- Accept-Encoding: gzip, deflate
- Referer: http://blog.csdn.net/kfanning/article/details/6062118
- Cookie: __utma=17226283.527580837.1375760870.1390443382.1390449326.168;
- __utmz=17226283.1390449326.168.129.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=http%20method;
- __gads=ID=9b9423f364ccda56:T=1375762746:S=ALNI_MZ1Sxf9s2CJPA7xqkv_IqcSTDxWKA; UN=jeckykang;
- uuid_tt_dd=-3422551472986240703_20131209; __message_sys_msg_id=2270; __message_gu_msg_id=0;
- __message_cnel_msg_id=0; __message_in_school=0; lzstat_uv=14049921881443061361|2955225;
- CloudGuest=Q/26rJhRxgVBdK86B7bhjJs74GajISRoJhW4uOXM5dxyb18V1goLQAla2v8nTchg1rOz5XFIaB6cqf+0KWjq8EV+c2Sr
- /G77BZ74uhwyR6SrrtMkWnpIpFOUsgdSVr/IyJQhuouLZ9mlbFMvdJu0A1m2dav+lJex1dxxHYFEB9FRt7ALVYxi/jxLcZzSjQ6j;
- _JQCMT_ifcookie=1; _JQCMT_browser=0654c777635ddcb3e6c316847e59c812; CloudSiteTheme=Default;
- __message_district_code=310000; UserName=jeckykang; UserInfo=VBm2%2f0wC5LAQ3FbSGMzLl9N53e%2bSM4sIblk33N
- ACXRqaIh8WQkLSDEHD5bO0u3PvsfxZDCGq%2fR3oap%2bcDj7UJ2LgWwF2xDtN2LXlEx9Rzo1SUGNqHTSk22U5RJ7PLH1l;
- UserNick=IronRabbit; access-token=0f5903c1-6ec0-42ad-905f-4db4cd247819; AU=065; __utmc=17226283;
- BAIDU_DUP_lcr=http://www.baidu.com/; dc_tos=mzu62s; dc_session_id=-bjdkmd|12; __utmb=17226283.4.10.1390449326
- Connection: keep-alive
上面第一行:请求方法(GET),URL,协议,版本。这是它的结构。
2. POST方法
- 向URL指定的资源提交数据或附加新的数据。
一般来说,提交表单数据都用POST方法。从如下列表中可以看到GET和POST的区别:
3. PUT方法
- 跟POST方法很像,也是向服务器提交数据。但是,它们之间有不同。PUT指定了资源在服务器上的位置,而POST没有。PUT方法请求服务器去把请求里的实体存储在请求
- URI(Request-URI)标识下。如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源
- 实体的最新修改版本。如果请求RI(Request-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此
- URI所标识下的资源。如果一个新的资源被创建了,源服务器必须能向用户代理(user agent)发送201(已创建)响应。如果已存在的资源被改变了,那么源服务器应
- 该发送200(Ok)或者204(无内容)响应。如果资源不能根据请求URI创建或者改变,一个合适的错误响应应该给出以反应问题的性质。实体的接收者不能忽略任何它不
- 理解和不能实现的Content-*(如:Content-Range)头域,并且必须返回501(没有被实现)响应。如果请求穿过一个缓存(cache),并且此请求
- URI(Request-URI)指示了一个或多个当前缓存的实体,那么这些实体应该被看作是旧的。PUT方法的响应是不可缓存的。POST方法和PUT方法请求最根本的区别是请
- 求URI(Request-URI)的含义不同。POST请求里的URI 指示一个能处理请求实体的资源(译注:此资源可能是一段程序,如jsp 里的servlet) 。
- 此资源可能是一个数据接收过程,一个网关(gateway,译注:网关和代理的区别是:网关可以进行协议转换,而代理不能,只是起代理的作用,比如缓存服务器其实就
- 是一个代理),或者一个单独接收注释的实体。对比而言,PUT方法请求里的URI标识请求里封装的实体一一用户代理知道URI意指什么,并且服务器不能把此请求应用于
- 其它资源(resource)。如果服务器期望请求被应用于一个不同的URI,那么它必须发送301(永久移动)响应;用户代理可以自己决定是否重定向请求。一个单独的资
- 源可能会被许多不同的URI指定。如:一篇文章可能会有一个URI指定当前版本,而这个URI区别于这篇文章其它特殊版本的URI。这种情况下,对一个通用URI的PUT请求
- 可能会导致其资源的其它URI请求被源服务器重定义。HTTP/1.1没有定义PUT方法对源服务器的状态影响。PUT请求必须遵循8.2节中的消息传送的要求。除非特别指出,
- PUT方法请求里的实体头域应该被用于资源的创建或修改。
4. HEAD方法
- 只请求页面的首部。
5. DELETE方法
- 删除服务器上的某资源。
6. OPTIONS方法
- 它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息。
以上6种方法中的4种可以和数据库的CRUD操作对应起来:
- Create: PUT
- Read: GET
- Update: POST
- Delete: DELETE
7. TRACE方法
- TRACE方法被用于激发一个远程的,应用层的请求消息回路(译注:TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请返回一个响应,
- 这就是一个请求响应回路)。
- 最后的接收者也许是源服务器,也许是接收到包含Max-Forwards头域值为0请求的代理或网关。TRACE请求不能包含一个实体。TRACE方法允许客户端去了
- 解数据被请求链的另一端接收的情况,并且利用那些数据信息去测试或诊断。Via头域值有特殊的用途,因为它可以作为请求链的跟踪信息。
- 利用Max-Forwards头域允许客户端限制请求链的长度,这是非常有用的,因为可以利用此去测试代理链在无限循环里转发消息。如果请求是有效的,响应应
- 该在实体主体里包含整个请求消息,并且响应应该包含一个Content-Type头域值为”message/http”的头域。此方法的响应不能被缓存。
8. CONNECT方法
- 把请求连接转换到透明的TCP/IP通道。
通信(1)----Http协议的方法讲解相关推荐
- 【物联网毕设基础】单片机:RS485 通信与 Modbus 协议
文章目录 RS485 通信与 Modbus 协议 单片机 RS485 通信接口.控制线.原理图及程序实例 RS485 通信与 Modbus 协议 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用 ...
- RS485通信和Modbus协议
在工业控制.电力通讯.智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换.最初采用的方式是 RS232 接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错 ...
- 什么是物联网?常见 IoT 物联网协议最全讲解
什么是物联网?常见IoT 物联网协议最全讲解 一.什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生.物联网的概念最早于1999年被提出来,曾被称为继计算机.互联网 ...
- 什么是物联网?常见IoT 物联网协议最全讲解
推荐语:这是一本从技术原理.工程实践.设计模式和最佳实践4个维度讲解物联网系统开发的著作,是作者10余年实践经验的总结. 付强,某智慧社区企业的联合创始人兼CTO,资深IoT技术专家,有10余年从业经 ...
- 生活中常见物联网实例_什么是物联网?常见 IoT 物联网协议最全讲解
什么是物联网?常见IoT 物联网协议最全讲解 一.什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生.物联网的概念最早于1999年被提出来,曾被称为继计算机.互联网 ...
- 生活中常见物联网实例_什么是物联网?常见IoT 物联网协议最全讲解
推荐语:这是一本从技术原理.工程实践.设计模式和最佳实践4个维度讲解物联网系统开发的著作,是作者10余年实践经验的总结. 付强,某智慧社区企业的联合创始人兼CTO,资深IoT技术专家,有10余年从业经 ...
- 什么是物联网?常见IoT 物联网协议最全讲解——基础知识
什么是物联网?常见IoT 物联网协议最全讲解 一.什么是物联网? 物联网(Internet of Things)这个概念读者应该不会陌生.物联网的概念最早于1999年被提出来,曾被称为继计算机.互联网 ...
- RS485 通信与 Modbus 协议
文章目录 RS485 通信与 Modbus 协议 单片机 RS485 通信接口.控制线.原理图及程序实例 RS485 通信与 Modbus 协议 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用 ...
- (chap2 简单的Http协议) HTTP方法(2)其他方法
1. PUT方法 传输文件. 就像FTP协议中的请求文件上传一样,要求在请求报文的实体中包含文件内容,然后保存到请求的URI指定的位置. 鉴于HTTP1.1的PUT方法自身不带有验证机制,任何人都可以 ...
最新文章
- Java操作json的通用类
- 戴尔/Dell R420服务器在 CentOS 5.6 64bit环境下安装网卡驱动
- windows10 64位 Tensorflow安装--CUDA 9.1+cuDNN7.1.1+python3.6.4+tf1.6+vs2017
- 如何定位Release程序崩溃原因
- 弹层蒙版(mask),ios滚动穿透,我们项目的解决方案
- linux上很方便的上传下载文件工具rz和sz
- 从零单排HBase 02:全面认识HBase架构(建议收藏)
- http协议的各类状态码
- mysql jsp servlet 中文乱码问题。
- S5PV210 Uboot开发与移植02:Uboot配置与编译
- 回复《论WEB标准专家》。
- 【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)
- 机器人教练走进驾校_机器人教练走进中通驾校
- 试题16 回文数字(5位或6位)
- APISpace 银行卡四要素API
- Linux history命令
- keil5库文件安装失败_iPad iPhone如何清理垃圾 iPad iPhone清理垃圾文件办法【详解】...
- java后端获取时间
- RN 在Android Studio运行闪退后报错
- 保险入门,我不推荐买保险
热门文章
- Linux内核分析 - 网络[二]:网卡驱动接收报文
- 嵌入式Linux系统编程学习之二十七线程的创建和退出
- Redis与数据库缓存一致性问题
- C++11 中的内联函数、auto关键字、for循环及空指针
- linux指令 sed,Linux命令sed
- 关于C语言逻辑值的说法错误的是( ),2017年计算机二级c语言题库及答案
- 【重难点】【Java基础 05】说一说你平时遇到的异常、什么情景下会用到反射、反射的底层原理
- Hibernate和MyBatis的缓存机制和比较
- java使用httpclient封装post请求和get的请求
- 利用scrapy框架爬取动态加载的数据