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

樟木头网站建设昆明网站建设工作室

樟木头网站建设,昆明网站建设工作室,网站建设的整个过程,福建大舟建设集团有限公司 网站目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: ax…目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: axios-拦截器 作用: 请求发送之前响应回来之后执行一些 公共 的逻辑 不难发现 这其实就是一个顺序链表能实现的把请求拦截器的函数推在前面 api请求的核心方法放在中间 响应拦截器放在数组后面遍历执行链表就实现了拦截器的顺序执行过程。 拦截器的作用 a. 统计api从发起请求到返回数据需要的时间 b. 配置公共的请求头加载弹窗等 c. 对响应状态码做拦截比入后端返回400或500的状态码 返回对应错误信息 注册之后调用接口请求发送时--》执行请求拦截器--》服务器服务器响应内容--》执行响应拦截器--》接收数据 请求拦截器-基本写法: // 添加请求拦截器 axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么,比如: 统一设置token// 通过config可以获取请求的设置比如headers可以获取修改请求头return config; }, function (error) {// 对请求错误做些什么return Promise.reject(error); }); axios请求拦截器-统一设置token 通过请求拦截器统一设置token 需求: 通过请求拦截器统一设置token设置一次之后后续调用接口不用单独设置 核心步骤: 添加请求拦截器统一设置token移除首页对应逻辑 关键代码: 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); }); 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失效 需求: 通过 axios响应拦截器-统一处理token失效 核心步骤: 添加响应拦截器统一处理token失效移除首页对应逻辑 关键代码: 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); }); 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响应拦截器-数据剥离 需求: axios响应拦截器-数据剥离页面中使用数据时少写一个data 核心步骤: 剥离data属性响应拦截器调整数据使用逻辑登录注册首页 关键代码: 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); }); 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]}) } 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)} }) 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.dnsts.com.cn/news/139486.html

相关文章:

  • 仿制网站侵权行为深圳营销型网站建设电话
  • 中国建设银行东营分行网站php网站开发心得体会
  • 建站之星管理中心英文手机商城网站建设
  • 营销型网站规划哪家代理注册公司好
  • 美食地图网站开发如何创办公司
  • 厦门网站建设制作多少钱企业公众号
  • 宁波房产信息网官方网站上海网站制作策划
  • 举报网站建设运行情况网站生成器怎么做
  • 做企业网站需要买什么资料电商网站开发的底层架构
  • 做网站推广链接该怎么做网站开发语言怎么识别
  • 网站营销策略怎么写网站分享到微信缩略图
  • 行唐网站建设潍坊做网站好看
  • 微信建一个网站wordpress添加小人
  • 如何建立手机论坛广州网站优化哪家快
  • flash xml网站模板建筑公司网站需求
  • 如何加盟网站建设词条有哪些网站可以做
  • 建设银行官方个人网站个人外贸网站制作
  • 织梦做网站教程群晖frp 外网访问wordpress
  • php自适应网站开发网络搜索优化
  • 山东建设执业资格注册中心网站wordpress轮播图源码
  • 学网站制作多少钱网站建设 网站开发
  • 仿站工具箱网页版免费可以看污app秋葵
  • 深圳市点击未来科技网站建设app网站模板下载
  • 网站建设整个流程ui设计一般要学多久
  • 公司网站的开发策略备案网站多少钱
  • 灌南网站建设江山市住房和城乡建设局网站
  • 长沙网站seo公司net framework可以用来做网站吗
  • 网站制作公司数据库管理排名凡客诚品现在还有吗
  • 如何做一个移动网站全网营销网站
  • python在线免费网站wordpress分类目录网站主题