Http 请求基本过程
-> 请求报文
请求行
请求头
请求体
客户端 服务器
状态行
响应头
实体内容
<-- 响应报文
请求头
- 请求行
- 请求头
Cookie 请求头向浏览器发送 cookie 数据 - 请求体
get 方式没有请求体
post 请求可以携带请求体
Content-Type 描述请求体类型
query 参数对应的 Content-Type 为 applocation/x-www-form-urlencoded
uname=zhangsan&age=23
json 格式为 application/json
{“uname”: “zhangsan”, “age”: 23}
Http 响应报文
- 响应状态行
常见响应状态码
200 OK
404 服务器无法根据客户端的请求找到资源
401 未授权/请求用户身份认证
500 服务器内部错误,无法完成请求 - 多个响应头
Set-Cookie: BD_CK_SAM=1;paht=/ 服务器生成 cookie 数据返回浏览器 - 响应体
html/json/js/多媒体…
post 请求体参数格式
- Content-Type: applocation/x-www-form-urlencoded;charset=utf-8
用于键值对参数,类似 query - Content-Type: applocation/json;charset=utf-8
用于携带 json 参数 - Content-Type: multipart/form-data
API 分类
- 常见请求方式
- GET 获取
- POST 新增
- PUT 更新
- DELETE 删除
- REST API:又称 Restful
所谓 REST API 就是一个接口地址,通过不同的请求方式,实现不同的功能 - 非 REST API:restless
- 请求方式不决定功能
- 一个路径只对应一个操作
- 只有 GET/POST
XHR
XMLHttpRequest 可以无需整个页面刷新与服务器交互
Axios 为封装得 XHR
fetch 为新技术,不是封装后得 XHR
http 请求与 ajax 请求区别
- ajax 请求是一种特别得 http 请求,通过 ajax 引擎处理
- 对服务器来说没有任何区别
- 浏览器发送只有 XHR 或 Fetch 才是 ajxax 请求,其他得都是非 ajax 请求
- 浏览器对一般请求会直接显示响应体
- ajax 请求不会对界面进行任何给你更新操作,只会触发回调函数
function axios({
url,
params= {},
}) {
return new Promise((reslove, reject) => {
// 执行 ajax 请求
// 成功执行 reslove
// 失败 reject
})
}
axios 取消请求