当前位置: 首页 > news >正文

网站显示后台登陆链接海外广告投放平台

网站显示后台登陆链接,海外广告投放平台,网站用词精准性,怎样做微信网站目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: ax…

目录

axios-拦截器

拦截器的作用

 请求拦截器-基本写法:

axios请求拦截器-统一设置token

需求:

核心步骤:

关键代码:

响应拦截器-基本写法:

axios响应拦截器-统一处理token失效

需求:

核心步骤:

关键代码:

axios响应拦截器-数据剥离

需求:

核心步骤:

关键代码:


axios-拦截器

作用: 请求发送之前,响应回来之后执行一些 公共 的逻辑

不难发现, 这其实就是一个顺序链表能实现的,把请求拦截器的函数推在前面, api请求的核心方法放在中间, 响应拦截器放在数组后面,遍历执行链表就实现了拦截器的顺序执行过程。

拦截器的作用

a. 统计api从发起请求到返回数据需要的时间

b. 配置公共的请求头,加载弹窗等

c. 对响应状态码做拦截,比入后端返回400或500的状态码, 返回对应错误信息

  1. 注册之后,调用接口
  2. 请求发送时--》执行请求拦截器--》服务器
  3. 服务器响应内容--》执行响应拦截器--》接收数据

 请求拦截器-基本写法:

// 添加请求拦截器
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么,比如: 统一设置token// 通过config可以获取请求的设置,比如headers可以获取(修改)请求头return config;
}, function (error) {// 对请求错误做些什么return Promise.reject(error);
});

axios请求拦截器-统一设置token

通过请求拦截器统一设置token

需求:

  1. 通过请求拦截器统一设置token
  2. 设置一次之后后续调用接口不用单独设置

核心步骤:

  1. 添加请求拦截器
  2. 统一设置token
  3. 移除首页对应逻辑

关键代码:

  1. commons.js
// 添加请求拦截器
// 统一携带token
axios.interceptors.request.use(function (config) {// 可以通过headers,查看+设置请求头// config.headers['info'] = 'itheima666'// 每次发送请求,都会执行这个回调函数// console.log(config)// 在发送请求之前做些什么,比如: 统一设置tokenconst token = localStorage.getItem('token')// token存在,才携带if (token) {config.headers['Authorization'] = token}return config;
}, function (error) {// 对请求错误做些什么return Promise.reject(error);
});
 
  1. index.js
// 首页-统计数据
async function getData() {try {// 调用接口(登录成功之后才可以调用)const res = await axios({url: '/dashboard',// 通过axios请求拦截器统一携带})const overview = res.data.data.overview
​// 渲染数据Object.keys(overview).forEach(key => {document.querySelector(`.${key}`).innerText = overview[key]})} catch (error) {// 首页-登录状态过期// 判断token失效(状态码401):token过期,token被篡改// console.dir(error)if (error.response.status === 401) {// 删除缓存并提示用户localStorage.removeItem('username')localStorage.removeItem('token')// 使用普通用户可以理解的方式提示他们showToast('请重新登录')
​// 返回登录页setTimeout(() => {location.href = 'login.html'}, 1500)}}
}

响应拦截器-基本写法:

// 添加响应拦截器
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。// 对响应数据做点什么,比如: 数据剥离return response;
}, function (error) {// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么: 比如统一处理token失效return Promise.reject(error);
});

axios响应拦截器-统一处理token失效

axios响应拦截器-统一处理token失效

需求:

  1. 通过 axios响应拦截器-统一处理token失效

核心步骤:

  1. 添加响应拦截器
  2. 统一处理token失效
  3. 移除首页对应逻辑

关键代码:

  1. common.js
// 添加响应拦截器
// 统一处理token过期
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。return response;
}, function (error) {// console.dir(error)// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么: 比如统一处理token失效// 统一处理token失效if (error.response.status === 401) {// 弹框提示用户showToast('请重新登录')// 删除缓存localStorage.removeItem('token')localStorage.removeItem('username')// 返回登录页setTimeout(() => {location.href = 'login.html'}, 1500)}return Promise.reject(error);
});
  1. index.js
// 首页-统计数据
async function getData() {// 调用接口(登录成功之后才可以调用)const res = await axios({url: '/dashboard',// 通过axios请求拦截器统一携带})const overview = res.data.data.overview
​// 渲染数据Object.keys(overview).forEach(key => {document.querySelector(`.${key}`).innerText = overview[key]}) 
}

axios响应拦截器-数据剥离

axios响应拦截器-数据剥离

需求:

  1. axios响应拦截器-数据剥离
  2. 页面中使用数据时少写一个data

核心步骤:

  1. 剥离data属性(响应拦截器)
  2. 调整数据使用逻辑(登录,注册,首页)

关键代码:

  1. commons.js
// 添加响应拦截器
// 统一处理token过期
// 数据剥离
axios.interceptors.response.use(function (response) {// 2xx 范围内的状态码都会触发该函数。// 对响应数据做点什么,比如: 数据剥离// 剥离data属性,页面中少写.data属性,直接可以获取到数据return response.data;
}, function (error) {// console.dir(error)// 超出 2xx 范围的状态码都会触发该函数。// 对响应错误做点什么: 比如统一处理token失效// 统一处理token失效if (error.response.status === 401) {// 弹框提示用户showToast('请重新登录')// 删除缓存localStorage.removeItem('token')localStorage.removeItem('username')// 返回登录页setTimeout(() => {location.href = 'login.html'}, 1500)}return Promise.reject(error);
});

  1. index.js:移除多余的.data
// 首页-统计数据
async function getData() {// 调用接口(登录成功之后才可以调用)const res = await axios({url: '/dashboard',// 通过axios请求拦截器统一携带})const overview = res.data.overview
​// 渲染数据Object.keys(overview).forEach(key => {document.querySelector(`.${key}`).innerText = overview[key]}) 
}
  1. register.js:移除多余的.data,try中
document.querySelector('#btn-register').addEventListener('click', async () => {// 1. 收集并校验数据const form = document.querySelector('.register-form')const data = serialize(form, { empty: true, hash: true })// console.log(data)const { username, password } = dataconsole.log(username, password)// 非空校验if (username === '' || password === '') {showToast('用户名和密码不能为空')return}
​// 长度校验if (username.length < 8 || username.length > 30 || password.length < 6 || password.length > 30) {showToast('用户名的长度为8-30,密码的长度为6-30')return}
​// 2. 数据提交try {// .post 请求方法 post,参数1:请求URL,参数2:提交的数据const res = await axios.post('/register', { username, password })// console.log(res)showToast(res.message)} catch (error) {// console.dir(error)showToast(error.response.data.message)}
})

  1. login.js:移除多余的.data,try中
document.querySelector('#btn-login').addEventListener('click', async () => {// 1. 收集并校验数据const form = document.querySelector('.login-form')const data = serialize(form, { empty: true, hash: true })console.log(data)const { username, password } = data// 非空判断if (username === '' || password === '') {showToast('用户名和密码不能为空')return}
​// 格式判断if (username.length < 8 || username.length > 30 || password.length < 6 || password.length > 30) {showToast('用户名长度8-30,密码长度6-30')return}
​// 2. 提交数据try {const res = await axios.post('/login', { username, password })// console.log(res)showToast(res.message)// 3. 缓存响应数据localStorage.setItem('token', res.data.token)localStorage.setItem('username', res.data.username)// 4. 跳转首页// 延迟一会在跳转,让提示框显示setTimeout(() => {// login.html和index.html的相对关系location.href = './index.html'}, 1500)
​} catch (error) {// console.dir(error)showToast(error.response.data.message)}
​
})

http://www.yayakq.cn/news/630048/

相关文章:

  • 网站做直播需要资质吗安阳县人口
  • 买域名网站免费广告推广平台
  • 绍兴网站建设冯炳良中国建筑人力资源管理信息系统
  • 聊城网站推广品牌怎么把网址做成网页链接
  • 中建国际建设公司网站贝斯特专业网站
  • 如何创立网站做新网站的swot分析
  • 安徽省住房和城乡建设厅网站域名特价流量网站
  • 搭建网站注册完域名应该怎么做seo短视频网页入口引流网站推荐
  • 官方网站下载地址开源多用户商城系统细节
  • 成都公司建站模板html5网站模板怎么修改
  • 如何做网站的悬浮窗口在哪里创建网站平台
  • 企业的网站如何建立的微信开发者模式在哪打开
  • 云南省城乡和住房建设厅网站yii wordpress
  • 公司制做网站专业网站营销
  • 开锁行业在58做网站有活吗深圳手机模板建站
  • 深圳建设网站哪家强phpcms v9做网站
  • 有关网站空间正确的说法是wordpress活动插件
  • 做示意图的网站域名备案接入商查询
  • phpcms做网站怎样申请网站空间
  • 造价企业怎么登陆建设部网站网站内容建设 互联互通
  • 辽宁建设科技信息网网站企业校园网站建设
  • 做一个中英文网站的价格企业推广方式推荐隐迅推
  • 东莞个人做网站北京市建筑工程设计有限责任公司
  • 嘉兴网站建设的前景多多进宝怎么推广赚钱
  • 视觉品牌网站建设大型网站建设动力无限
  • 什么什么设计英文网站网站设计制作哪家好
  • 网站开发精灵wordpress怎么发文章
  • 哈尔滨 微网站设计成都行业网站
  • 站长怎么添加网站内容泉州模板建站定制
  • 中国建设银行泗水支行的网站收到短信说备案被退回但工信部网站上正常啊