一、http请求格式
请求:从客户端到服务端的请求消息
请求消息格式
- 请求行:请求方法、请求URL、HTTP协议及版本
URL的一般形式为<协议>://<主机>:<端口>/<路径>/<文件名> - 请求头部
- 空一行
- 请求体
- 请求方法
请求方法 | |
---|---|
get | 请求读取由URL所标识的信息,获取信息和资源(获取资源) |
post | 给服务器发送数据,发送提交数据(传输资源) |
head | 请求读取由URL所有标识的信息的首部(获得报文首部) |
put | 在指明的URL下存储一个文档–restful–替换资源(更新资源) |
delete | 删除指明的URL所标识的资源(删除资源) |
connect | 用于代理服务器 |
option | 请求一些选项的信息 |
trace | 用来进行环回测试的请求报文 |
- 请求url
如:
http://wy.lemonban.com:3000/callComponent/login/DoLogin?version=2.0
url格式 | |
---|---|
http | 协议 |
wy.lemonban.com | 域名/ip |
3000 | 端口 |
/callComponent/login/DoLogin | 资源路径 |
version=2.0 | 参数=参数值 |
- 请求头部
重点了解:content-type
content-type
- application/json : {key:value},键值对形式
key:键,双引号引起来
value:值,数值可以不用引号,建议全部引号引起来
传空值:null 或 “”
{
"logo":"HC",
"name":"小米",
"age":20,
"sex":"man",
"salary":""
}
- text/xml : <></>,一对标签中包裹传递的数据
<username>wy tudou</username>
<passwd>lemon666</passwd>
请求头部 | |
---|---|
content-type | 传给服务器的内容的格式。请求体的内容类型。如application/x-www-form-urlencoded |
User-Agent | 产生请求的客户端类型–windows,浏览器版本(内核),反爬虫机制 |
Accept | 客户端可识别的内容类型列表 |
Host | 请求的主机名,允许多个域名同处一个IP地址,即虚拟机 |
Accept-Encoding | 客户端使用的编码环境和编码方式 |
Accept-Language | 客户端语言环境 |
Accept-Charset | client接收的字符集 |
Authorization | 授权信息,一般用于存放授权之后的信息 |
Authentication | 客户端提供给服务器,进行权限认证的信息 |
Connection | 表示是否需要持久连接 |
Content-Length | 表示请求数据正文的长度 |
Cookie | 这个与服务器端做交互的,存储保持会话的重要信息–login(用户名+密码)–无状态 |
Refer | 表示该次请求的来源,一般用于做防盗链 |
content-length | 请求体的数据长度 |
cache-control | 缓存机制:cache-control:no cache |
pragma | 防止页面被缓存,和cache-control:no cache一样 |
- 请求体(请求正文)
- 常见的接口协议
① HTTP类型/协议:通过GET或POST来获取数据,在数据处理上效率比较高----95%项目都是http协议
② Webservice类型/协议:通过soap协议来获取数据,比起http来说能处理更加复杂的数据类型。本质上也是http协议。----传统项目的接口类型
二、http响应格式
响应:从服务端到客户端的响应数据
- 响应状态码
响应状态码 | |
---|---|
1×× | 指示信息,表示请求已接收,继续处理。 |
2×× | 成功,表示请求已被成功接收、理解和接受。 |
3×× | 重定向,要完成请求必须进行更进一步的操作。 |
4×× | 客户端错误,请求有语法错误或请求无法实现。 |
5×× | 服务器错误,服务器未能实现合法的请求。 |
-
响应头
cookie/session(登录鉴权) -
响应体/响应正文:针对请求从服务响应回来的具体数据,比如xml、json等,token(登录鉴权)
三、常见问题
- get与post区别
- 在客户端,get方式在通过url提交数据,数据在url中可以看到;post 方式,数据放置在htmlheader内提交
- get方式提交的数据最多只能有1024字节,而post则没有此限制
- 安全性问题。使用 get 的时候,参数会显示在地址栏上,而 post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post 为好
- 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一 url 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。换句话说,get 请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。post 请求就不那么轻松了。post 表示可能改变服务器上的资源的请求。
- cookie、session、token区别
- cookie:客户端和服务器都能创建cookie,存放客户端。存放一些不敏感的数据,比如说用户名信息,数据类型json
- session:服务器端生成session,存放服务器端。可以存放任意数据,一般默认时间是30min,session依赖cookie实现
- token:服务器生成、验证,以cookie或请求头的方式传给客户端,客户端以同样方式发送给服务器。
-
通行证
session id会存在cookie中,每次请求cookie中的所有信息都会传送给服务器,服务器通过session id来识别是否是同一个用户的请求。不是同一个用户的话,就会要求用户重新登录。相当于登录鉴权。 -
凡是登录之后才能操作的页面,其对应的接口都需要做登录鉴权。