服务器的概念 & 初识 Ajax
1.客户端与服务器通信的过程
2.axios的使用
3.接口文档的概念
4.network面板的使用
5.全局配置
6.拦截器
服务器
服务器的本质:也是一台电脑。
服务器的作用:
1.存储一个网站的文件(HTML、CSS、JS、图片、音乐.....)
2.提供网站的文件给用户
资源
1.服务器上的数据、网页(html文件)、图片、音乐、视频、字体文件、CSS文件、JS文件等等都称之为资源。所以资源代指服务器上存储的内容。
2.通俗的讲,我们浏览网页时,从网络当中看到的内容都叫做资源。
数据
服务器多数情况都使用数据表的方式来存储数据,和我们平时见到的表格差不多,形式如下:
客户端
概念:在前端开发中,客户端特指“Web 浏览器”。
作用:将互联网世界中的 Web 资源加载、并呈现到浏览器窗口中供用户使用。
常见的浏览器:
URL 地址
服务器上的每个资源,都对应着独一无二的URL地址
客户端与服务器通信的过程
就像我们(客户)去银行(服务场所)办理业务:
客户提出需求:客户提出要办理业务,比如办卡、存钱、取钱、销户、买纪念币等等
银行的回应:银行根据客户的需求,办理相关的业务
客户端与服务器之间的通信过程,分为请求 - 响应两个步骤。其中:
请求的概念:客户端通过网络去找服务器要资源的过程,叫做“请求”
响应的概念:服务器把资源通过网络发送给客户端的过程,叫做“响应”
什么是 Ajax
Ajax 是浏览器中的技术:用来实现客户端网页请求服务器的数据。
它的英文全称是 Asynchronous Javascript And XML,简称 Ajax。
使用 Ajax 请求数据的 5 种方式
axios
是前端圈最火的、专注于数据请求的库。
中文官网地址:www.axios-http.cn/
英文官网地址:www.npmjs.com/package/axi…
axios 的基础语法
GET和DELETE请求提交数据用 params
POST、PUT和PATCH请求提交数据用 data
network工具
示例
// url:必须的,如果没有报错,它是请求地址--服务器资源地址
// method:请求方式,如get,post,这个方式一定要参照接口文档
// get请求方式
axios({
// get方式的参数也可以在url中拼接,格式为: ?参数=值&参数=值
url: 'http://www.baidu.com?id=10338',
method: 'get'
}).then(result => {
console.log(result)
})
// aixos.get(url[?参数=值],[{params:{参数对象}}],{配置项}).then()
axios.get('http://www.baidu.com', {
// params:键只能写params
params: { id: 11778 }
})
.then(result => {
console.log(result)
})
// POST 请求方式
axios({
method: 'POST',
url: 'http://www.baidu.com',
data: {
key:value
}
}).then(result => {
alert(result.data.message)
})
network面板介绍
常见的状态码
200 表示从客户端发来的请求在服务器端被正常处理了。
204 表示请求处理成功,但没有资源返回。
301 表示永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。
302 表示临时性重定向。
304 表示客户端发送附带条件的请求时(指采用GET方法的请求报文中包含if-matched,if-modified-since,if-none-match,if-range,if-unmodified-since任一个首部)服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304Modified(服务器端资源未改变,可直接使用客户端未过期的缓存)
400 表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。
401 表示未授权(Unauthorized),当前请求需要用户验证
403 表示对请求资源的访问被服务器拒绝了
404 表示服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
500 表示服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。
503 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
axios全局配置
在 url 地址中,协议://域名:端口 对应的部分叫做“请求根路径”。
全局配置请求根路径的好处:提高项目的可维护性。全局配置根路径后,后续所有的请求都可以使用全局配置的根路径
基于 axios 提供的固定配置,即可轻松配置请求的根路径。语法格式如下:
axios.defaults.baseURL = '请求根路径'
拦截器
拦截器(interceptors)用来全局拦截 axios 的每一次请求与响应
好处:可以把每个请求中,某些重复性的业务代码封装到拦截器中,提高代码的复用性。
使用拦截器 - 实现 loading 效果
/* 图片样式 */
.loading {
position: absolute;
width: 300px;
height: 300px;
left: 500px;
top: 300px;
background-color: #ccc;
display: none;
}
<!-- 拦截器图片 -->
<img src="./img/loading.gif" alt="" class="loading">
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
document.querySelector('.loading').style.display = 'block'
return config;
}, function (error) {
// 对请求错误做些什么
alert('请求出错啦')
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
document.querySelector('.loading').style.display = 'none'
return response;
}, function (error) {
// 对响应错误做点什么
document.querySelector('.loading').style.display = 'none'
return Promise.reject(error);
});