requset页面的代码逻辑

news2025/1/27 12:47:51

基地址 :

//引入axios
import axios from 'axios';
//vuex
// import store from '../store/index';
//配置基准地址
const Serve = axios.create({
    baseURL: 'http://47.99.166.157:3000',
    // transformRequest: [function (data) {
    //     try {
    //         return jsonBig.parse(data)
    //     } catch (err) {
    //         return data
    //     }
    // }],
    timeout: 5000,
})

//抛出serve
export default Serve

main.js引入路径:

//引入基准路径
import axios from './utils/reques';

然后使用网络请求的数据:

  请求头的设置和请求拦截:

import axios from "axios";
import qs from "querystring";
axios.defaults.timeout = 60000;
axios.defaults.baseURL = window.apiHost;  //window.apiHost可以在main.js里进行设置
axios.defaults.withCredentials = false;

axios.interceptors.request.use(
  config => {
    if (config.method === "POST") {
      config.data = qs.stringify(config.data, { arrayFormat: "indices" });
    }
    //当使用Ie浏览器的时候,可能会出现数据更新了,但是接口请求数据不刷新的情况,加上下面这段代码即可
    if (config.method === 'get' || config.method === 'GET') {
      config.params = {
        _t: Date.parse(new Date()) / 1000,
        ...config.params
      }
    }
    if (!config.headers["Content-Type"]) {
      config.headers["Content-Type"] = "application/json;utf-8";
    }
	if (localStorage.getItem("userInfo")){
		var userinfo=localStorage.getItem("userInfo");
		config.headers["Authorization"]="Bearer "+JSON.parse(userinfo).Token
	}
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);
export default axios;

拦截器:

 

公共文件

文件路径和名称:utils/api.js

引入

import axios from "axios";
import { Message } from 'element-ui';
import router from "../router";//在拦截器中引入了router,在router中,配置了首先要转向的页面

拦截器
如果成功调用了后端接口 

  //  后端返回  

 确定是调用了后端

     如果,后端返回500、401、403,消息框提示(Messsage.error)后端返回的提示信息,因为是业务逻辑错误,所以返回空

     如果,有返回信息,消息框显示成功信息

  返回成功的数据

如果没有调用到后端

   后端返回504、404

     消息框提示服务器被吃了( ╯□╰ )

   后端返回403

     提示没权限

    后端返回401

      提示尚未登录,请登录

      路由替换成根路径

    判断后端返回的错误应答data是否有信息

       如果有信息,消息框提示data.message

       否则,消息框提示未知错误

    返回空

请求
定义前置路径

导出定义的post请求,参数是url\params

返回 axios

方法:post

data:params


前端


页面打开,就加载updateCaptcha方法,方法中获取到验证码图片的地址,通过get方法。

提交登录调用了post方法

执行这个方法,就会调用postRequest公共方法

跨域

token过期:

当我们操作某个需要token作为请求头的接口时,返回的数据错误error.response.status === 401,说明我们的token已经过期了。

阻拦响应器中配置:

// 阻拦响应器
request.interceptors.response.use(function (response) {
  return response
}, async function (error) {
  if (error.response && error.response.status === 401) {
    // token续签方式1:
    //清空当前vuex保存的token(我们这的vuex和本地已经建立了关系,相当于也清空了本地token)
     store.commit('upUser', '')
     console.log(router.currentRoute.fullPath)// 当前路由的完整路径(#后面的)
      //这里我们采用?path=的方式保存当前浏览页面的完整路径,
    // push()会产生历史记录 而replace不会有历史记录
     router.push({ path: `/login?path=${router.currentRoute.fullPath}` })
 
  }
  return Promise.reject(error)
})

再登入组件中给登入功能函数添加:

 this.$router.replace({
          path: this.$route.query.path || '/'
        })

// 1.点击登入
    async onSubmit () {
      try {
        const { data: res } = await loginAPI(this.user)
        //登录成功
        // 不严谨的返回上次浏览的页面
        // this.$router.back()
        // 推荐方式:
        // 登录后, 判断有未遂地址(有未遂地址的情况是:token过期,在阻拦响应器中实现对未遂地址的保存), 登入成功后跳转到未遂地址, 否则去/路径(跳到首页--这种情况是:用户主动前往登入页面的登入,没有未遂地址,登入成功后直接前往首页)
        // replace不会产生路由历史记录
        this.$router.replace({
          path: this.$route.query.path || '/'
        })
        // 存储获取过来的token
        this.$store.commit('upUser', res.data)
      } catch (err) {
        console.log(err)
        if (err.response.status === 400) {
          this.$toast.fail('手机号或验证码错误')
        } else {
          this.$toast.fail('登入失败,请稍后再试') // 可能由于网络问题导致的登入失败
        }
      }
    },

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】无限量PPT免费下载?找模板在不怕心仪得不能用啦

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 开发环境: python 3.8 pycharm 不会安装的可以文末名片我获取哦 😎 模块使用: 第三方模块,需要安装 win R 输入cmd 输入安装命令 pip install 模块名 (如果出现爆红 可能是因为 网络…

5分钟搞懂矩阵乘法的本质

大家好啊,我是董董灿。 很多与深度学习算法相关的面试,面试官可能都会问一类问题,那就是你是如何理解矩阵乘算法的。 更有甚者,会让你当场手写矩阵乘算法,然后问细节,问如何优化,面试现场&…

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理方法MATLAB代码实现(持续更新)

【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理方法MATLAB代码实现(持续更新) 一、降维方法 常见的降维方法: 1.变量归类(主成分分析PCA、核主成分分析KPCA) 2.变量筛选(临近成分分析NCA、皮尔逊系数PCC、…

签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!

我的新书经过千难万险终于上架, 为了感谢众多老铁的支持, 所以上周日搞了签名预售的活动,挂了300本, 一上线很快就被大家买光了, 留言需要单独写一些话的老铁,我也都尽量满足了, 如果一楼还…

HNU-操作系统OS-实验Lab5

OS_Lab5_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 实验目的 了解第一个用户进程创建过程了解系统调用框架的实现机制了解ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理 实验…

计算机组成原理基础练习题第一章

有些计算机将一部分软件永恒地存于只读存储器中,称之为() A.硬件    B.软件C.固件    D.辅助存储器输入、输出装置以及外界的辅助存储器称为() A.操作系统    B.存储器 C.主机      D.外围设备完整的计算机系…

算法时间空间复杂度

文章目录 算法算法特性 时间复杂度时间复杂度概念算法运行时间例如时间复杂度分三种 空间复杂度 算法 算法特性 1.有穷性:执行有穷步(有限步)之后结束。 2.确定性:只有唯一的执行路径。 3.可行性:代码可以执行起来…

2023年数维杯ABC选题人数公布

根据各个平台开赛后28小时各项数据统计,进行评估(方法见注释),最终得出2023年数维杯选题人数,大致为 A:B:C260:281:40 题号选题人数A260B281C40 选题人数统计结果分析:AB为研究生本…

vue3开启大海贼时代!!!

大海贼时代结束!!! vue3开始!!! setup初体验 1.与vue2不同的是 定义的变量和方法都被放到一个叫 setup( )里面了 2.vue2里面没有了 this 3. 1)访问变量先定义 const msg 1 2&#xff0…

[架构之路-196] - 发现问题原因的通常步骤:提出问题、明确问题、偏差分析、因素分析、原因分析

目录 前言: 通用问题的方法论 第一步:是提出问题阶段:表象、总体、大致 第二步:是明确问题阶段(深层):分解、分类、排序 第三步:是明确问题阶段(目标)&a…

关于一个C++项目:高并发内存池的开发过程(一)

原项目地址:高并发内存池项目: 高并发内存池项目的课堂板书代码 (gitee.com) 写在前面 本打算利用五一假期的时间将这个项目一口气开发完成,但由于本人的懈怠,这个项目最终只完成了80%。于是利用长假后的一天假期,将这个项目的框…

springboot整合security,mybatisPlus,thymeleaf实现登录认证及用户,菜单,角色权限管理

介绍 本系统为springboot整合security,mybatisPlus,thymeleaf实现登录认证及用户,菜单,角色权限管理。页面为极简模式,没有任何渲染。 源码:https://gitee.com/qfp17393120407/spring-boot_thymeleaf 开发…

算法训练Day59:503.下一个更大元素II 42. 接雨水

文章目录 [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/description/)题解 接雨水题解 下一个更大元素 II CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (66.68%)8060--0 Tags 堆 | 数组 | 单调栈 Compani…

企业信息化战略与实战(三)-企业信息化与电子商务概念

上面我们了解了政府信息化与企业信息化的部分概念,今天继续了解企业信息化的相关概念和电子商务相关概念。 1、决策支持系统(DSS) 了解基本理念和组成部分即可. 决策支持系统的作用一般是供决策,做辅助用途的系统,当你做一个决策的时候,你可以需要给你的决策做支持。比如…

05- redis集群模式搭建(上) (包含云服务器[填坑])

目录 1. 准备环境: 2. 简介: -> 2.1 前言: -> 2.2 Redis集群架构实现了对redis的水平扩容 -> 2.3 redis cluster集群原理 3. 搭建后特别需要注意的问题 ->3.1 [重点]: 如果一个服务出现故障: 是否可以继续提供服务??? ---> 3.1.1 如果集群中故障re…

PCIe的capability扩展空间字段解释

解释 这是一段关于高级错误报告的信息,其中包含多个字段和值。以下是每个字段的详细解释: Capabilities: [100 v1] Advanced Error Reporting 这是该设备支持高级错误报告的能力标识符。 UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- R…

python的文件操作模块shutil和pathlib总结

一:shutil模块 1,shutil模块安装 pip insatll shutilwhich 2,shutil支持的方法 可以通过dir(shutil)查看shutil支持的方法和属性 [Error, ExecError, ReadError, RegistryError, SameFileError, SpecialFileError, _ARCHIVE_FORMATS, _BZ2_…

当列车穿过时空隧道:解密力扣“计算列车到站时间”

本篇博客会讲解力扣“2651. 计算列车到站时间”的解题思路,这是题目链接。 先来审题: 以下是输出示例: 以下是提示: 这道题是给大家树立信心的。计算方法:(预期时间延误时间)%24即可。 int findDelayedArrivalTim…

奇技淫巧第8期

学无止境。 下面是对去年11月至今年5月的零散知识点总结。 春节期间好好放松了一两个月,来校后又懒散的度过了一两个月,直到论文评审意见下来,才开启冲刺模式狂干了一两个月。总的来说,这半年来摸的时间比较多。好,不废…

想学好Python的话,这6本书带你从入门到精通

推荐几本在豆瓣评分很不错的Python学习书籍,这些书的电子版被我搜集整理了出来,今天分享给大家。 书籍包括《Python编程:从入门到实践》、《Python编程快速上手》、《流畅的Python》、《像计算机科学家一样思考Python》、《利用Python进行数…