主要参考 http://www.imooc.com/article/14397,来源:慕课网,作者种子_fe
HTTP是超文本传输协议,主要特点有:
- 支持客户、服务器模式
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径,而且HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快;
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记;
- 无连接:每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。节省了传输时间;
- 无状态:HTTP是无状态协议,对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传。
http请求:requset消息的结构
三部分:请求行,请求头,请求体
- request line包括请求方法Method(GET/POST)、请求资源的路径path to resource(对应后端路由部分定义的路径)、http协议的版本号。
- request header请求头
- request body请求体,当使用GET方法发送请求的时候,请求体是空的
http响应:response消息的结构
三部分:响应行,响应头,响应体
- response line包括http协议版本号,响应状态码和响应状态消息
- request header响应头
- response body相应体
HTTP响应状态码
HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别
1XX 提示信息类 - 表示请求已被成功接收,继续处理
2XX 响应成功类 - 表示请求已被成功接收,理解,接受
3XX 重定向类 - 要完成请求必须进行更进一步的处理
4XX 客户端错误类 - 请求有语法错误或请求无法实现
5XX 服务器端错误类 - 服务器未能实现合法的请求
状态码有很多,不过一开始只需要掌握一些比较常见的:
- 200 ok: 最常见的就是成功响应状态码200了, 这表明该请求被成功地完成,所请求的资源发送回客户端。上面打开项目主页的实例中就是200
- 304 not modified: 假如我们打开主页后在浏览器中刷新,就会看到响应的状态码变成了304,这代表之前响应的html文档已经被缓存了,服务器端相同的文档没有变化,可以继续使用缓存的文档,因此304响应没有response body部分
- 302 found: 重定向,新的URL会在response header中的Location中返回,浏览器将会自动使用新的URL发出新的Request,假如我们在登录页提交登录表单发送一个POST请求进行登录,就会得到一个302响应并且重定向到/index路径下
- 404 not found: 请求资源不存在(输错了URL,或者服务器端现在没有这个页面了)
- 500 Internal Server Error: 服务器发生了不可预期的错误,这个一般在会在服务器的程序码出错时发生