每次创建好一个 Web 项目,直接在浏览器输入 http://localhost:8080 ;小程序和Android 也是通过 http://localhost:8080/ 访问到后台的方法。还记的计算机网络课上的内容,Http属于应用层,TCP(传输控制协议)、用户数据报协议(UDP) 属于传输层。
Http 超文本传输协议
一种建立在 TCP 上的无状态连接,用于客户端和服务器之间的通信,规定了客户端和服务器之间的通信格式,包括请求 ( request ) 与响应 ( response ) 的格式。【可通过浏览器 [F12] ,右键开发者工具,选择 network 查看请求头与响应头 】
【工作流程】
1、
客户端(浏览器)发送一个 HTTP 请求,2、
服务端(网站后台)收到请求开始处理,并将处理的结果返回给客户端(浏览器),3、
客户端(浏览器)对结果进行处理并展示。
【请求方式】
- Web 浏览器请求:
- 1-1. 用户输入地址后回车。
- 1-2. 浏览器拼接 Http 报文并发送请求给服务器。
- 1-3. 服务器处理请求后,发送响应报文给浏览器。
- 1-4. 浏览器解析响应报文并使用渲染引擎显示到界面。
- APP 客户端请求:
- 2-1. 用户点击按钮等控件或者自动触发网络请求。
- 2-2. Android 代码调用拼装 HTTP 报文并发送到服务器。
- 2-3. 服务器处理请求后发送响应报文给手机。
- 2-4. Android 代码处理响应报文并作出相应的数据处理。
【重点解释】 - 客户端:发送请求,获取资源。
- 服务器:接收处理请求,提供资源响应。
- 报文。
【报文】
报文是在 HTTP 应用程序之间发送的数据块,这些数据块以一些文本的元信息(meta 标签中的信息)开头,描述了报文的内容和含义。由 3 部分组成,①起始行:对报文进行描述。②首部(header):属性设置 。③主体。
- 请求报文。
起始行:
请求方法<method>、请求路径<path>、HTTP版本<HTTP version>
首
部:
包含许多键值对,对响应数据的一些格式信息。
主
体:
- 响应报文。
起始行:
HTTP版本<HTTP version>、状态码<status code>、原因短句<reason-phrase>
首
部:
包含许多键值对,对响应数据的一些格式信息。
主
体:
{ 请求方法 }
常用的是 Get 以及 POST 。还有 PUT 、DELETE、HEAD 等方法。
# GET (幂等操作)
Get-1. 报文中不发送主体,主在请求资源。
Get-2. 通过 @Path 获取参数。
# POST
Post-1. 报文中的主体内容发送给服务器的内容,主在增加和修改。
Post-2. 通过 @Field 获取参数。
# PUT (幂等操作)
Put-1. 报文中的主体内容发送给服务器的内容,主在修改。
Put-2. 通过 @Path 获取参数。通过 @Field 获取参数。
# DELETE (幂等操作)
Delete-1. 报文中不发送主体,主在删除资源。
Delete-2. 通过 @Path 获取参数。
# HEAD
Head-1. HEAD 与 GET 的使用相同,报文中没有主体。
Head-2. 主在用于下载需求,返回的 Headers 中有下载内容的大小,可用于显示进度。
幂等操作:请求一次和请求多次的结果是一样的。
返回的状态码
状态码是对结果进行类型化的描述的,大致分1、2、3、4、5等5类。
接触最多的状态码就是 404,其次还有 400、500、415等。
- 404 是请求的资源不存在。
- 400 客户端请求错误。
- 500 服务器内部错误。
- 415 请求格式错误。
- 1xx :临时性消息。
100:继续发送。
101:正在切换协议。
- 2xx :成功性消息。
200:OK。
201:创建成功。
- 3xx :重定向问题。
301:域名永久移动。
302:暂时移动。
303:内容未改变,请求被重定向到客户端本地缓存。
- 4xx :客户端错误。
400:客户端请求错误,服务器不理解请求的语法。
401:需要进行身份验证。
403:服务器拒绝访问。
- 5xx :服务器错误。
503:服务不可用。
报文的首部(Headers)
首部字段,主要分为以下几类:
- 通用首部 ==> 提供了与报文相关的最基本的信息。
- 请求首部 ==> 在请求报文中有意义的内容
requestCode-1. Host:服务器的主机名与端口号,在目标服务器上定位子服务器的。
requestCode-2. Accept:告诉服务器,客户端接收的类型。
- 响应首部 ==> 在响应报文中有意义的内容。
- body ==> 描述 主题的内容。
请求与响应都可以包含的内容:
1、Content-Type:实际返回内容的类型。text/html(html文本)、x-www-form-urlencoded(纯文本)、multitype/form-data(二进制文件)、application/json,image/jpeg,application/zip。