关键地方:基于TCP的应用层的网络协议,这里的协议就客户端和服务端进行通信的一种规则。模式就是发起请求,响应请求!
HTTP请求构成:
- 请求行:包含请求方法、请求地址和 HTTP 协议版本
- 消息报头:包含一系列的键值对
- 请求正文(可选):注意和消息报头之间有一个空行
- 注意:这些组成只要在打开网页的浏览器就可以找到,按下F12就可以了!
里面的信息关键的有如下:
- Host 是请求报头域,用于指定被请求资源的 Internet 主机和端口号,它通常从 HTTP URL 中提取出来;
- User-Agent 用于标识请求者的一些信息,比如浏览器类型和版本,操作系统等;
- Accept 用于指定客户端希望接受哪些类型的信息,比如 text/html, image/gif 等;
HTTP 通过不同的请求方法以多种方式来操作指定的资源,主要常用的请求方法如下:
GET:从服务器获取指定(请求地址)的资源的信息,它通常只用于读取数据,就像数据库查询一 样,不会对资源进行修改。
POST:向指定资源提交数据(比如提交表单,上传文件),请求服务器进行处理。数据被包含在请 求正文中,这个请求可能会创建新的资源或更新现有的资源。
PUT:通过指定资源的唯一标识(在服务器上的具体存放位置),请求服务器创建或更新资源。
DELETE:请求服务器删除指定资源。
HTTP 响应与 HTTP 请求相似,由三部分组成:
- 状态行:包含 HTTP 协议版本、状态码和状态描述,以空格分隔
- 响应头:即消息报头,包含一系列的键值对
- 响应正文:返回内容,注意和响应头之间有一个空行
状态码重点:
200
是状态码,表示客户端请求成功,OK
是相应的状态描述
- 1XX 消息 -- 请求已被服务接收,继续处理
- 2XX 成功 -- 请求已成功被服务器接收、理解、并接受
- 200 OK
- 201 Created 已创建
- 202 Accepted 接收
- 203 Non-Authoritative Information 非认证信息
- 204 No Content 无内容
- 3XX 重定向 -- 需要后续操作才能完成这一请求
- 301 Moved Permanently 请求永久重定向
- 302 Moved Temporarily 请求临时重定向
- 304 Not Modified 文件未修改,可以直接使用缓存的文件
- 305 Use Proxy 使用代理
- 4XX 请求错误 -- 请求含有词法错误或者无法被执行
- 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
- 404 Not Found 请求的资源不存在,例如,输入了错误的URL
- 5XX 服务器错误 -- 服务器在处理某个正确请求时发生错误
- 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求
- 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常
- 504 Gateway Time-out 网关超时
POST 所对应的 URI 并非创建的资源本身,而是资源的接收者,资源本身的存放位置由服务器决定;而 PUT 所对应的 URI 是要创建或更新的资源本身,它指明了具体的存放位置
HTTP 是在网络上传输 HTML 的协议,用于浏览器和服务器的通信,默认使用 80 端口。
URL 地址用于定位资源,HTTP 中的 GET, POST, PUT, DELETE 用于操作资源,比如查询,增加,更新等。
POST VS PUT
- 使用 PUT 创建资源需要提供资源的唯一标识(具体存放位置),POST 不需要,POST 的数据存放位置由服务器自己决定
- 使用 PUT 更新某一资源,需要更新资源的全部属性;而使用 POST,可以更新全部或一部分值
- GET 可提交的数据量受到 URL 长度的限制,HTTP 协议规范没有对 URL 长度进行限制,这个限制是特定的浏览器及服务器对它的限制。
- 理论上讲,POST 是没有大小限制的,HTTP 协议规范也没有进行大小限制,出于安全考虑,服务器软件在实现时会做一定限制。