图解http(一)

2017-07-30  本文已影响0人  2林子易2

从今天开始阅读图解http这本书,下载地址:我的百度云

http的发展史

这个我就不说了,总之起因就是因为一个家伙想知识共享就搞出来这个东西。http协议的更新还是很慢的,不像IE都到多少了。目前http协议正在准备出2.0,听说老快了,市面上主流的还是1.1。

相关协议

与http关系比较大的几个协议就是:tcp、ip、dns
下面一张图形象说明了http与这几个协议的关系。


http请求过程

URI和URL

URI包含着URL

Uniform Resource Identifier
统一格式 资源 标识
http/ftp ---- ----

标准格式
http://[user:pass@]www.example.jp:80/dir/index.html?uid=1#ch1
协议 登陆信息 服务器地址 端口 文件路径 查询字符串 片段标识符

第二章

请求和响应报文的组成

请求报文 响应报文

服务器请求

除了对服务器资源的请求,还可以对服务器本身进行请求。比如:
OPTIONS * HTTP/1.1
这是对服务器支持http方法种类的查询。

请求方法

请求方法

PUT、PATCH、DELETE在一般网站上都不会用到,RESTful架构的网站可能会开放。主要是因为HTTP/1.1的这些方法都不带验证机制。

持久连接和管线化

最初的http是每次http请求响应完成都会断开tcp连接,这样如果一个页面有很多图片就会有很多次tcp三次握手四次挥手,很耗时间。
http1.1提出keep-alive,只要没有一端提出明确的断开连接,就一直保持tcp连接通道,节省了多次tcp连接的时间。
管线化则提出http请求的同时发送,像是异步一样,不等待前面http响应的回馈,异步等待回馈。

Cookie

http是无状态协议,它的状态通过cookie来保持。
响应在header中添加set-cookie告诉客户端下次请求加上cookie
请求在header中添加客户端所有的cookie

cookie传输

状态码

服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止  的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

状态码的完全列表参见这里

传送门
RESTful API 设计指南
理解RESTful架构

上一篇下一篇

猜你喜欢

热点阅读