首页 > 其他分享 >项目部署重要部分,axios二次封装,API接口统一管理

项目部署重要部分,axios二次封装,API接口统一管理

时间:2024-11-03 12:20:00浏览次数:6  
标签:axios 封装 string request API router import 路由

5.10 axios二次封装

目的:
1:使用请求拦截器,可以在请求拦截器中处理一些业务(开始进度条、请求头携带公共参数)
2:使用响应拦截器,可以在响应拦截器中处理一些业务(进度条结束、简化服务器返回的数据、处理http网络错误)

在项目中安装axios
pnpm i axios
在src文件下新建utils/request.ts

文件配置如下

// 进行axios的二次封装
import axios from "axios";
import { ElMessage } from "element-plus";
// 第一步:利用axios对象的create方法,去创建axios实例(其他的配置:基础路径,超时的时间)
let request=axios.create({
  // 基础路径
  baseURL:import.meta.env.VITE_APP_BASE_API,//基础路径上会携带/api
  timeout:5000//超时的时间的设置
});
// 第二步:request实例添加请求与响应拦截器
request.interceptors.request.use((config)=>{
  // config配置对象,headers属性请求头,经常给服务器端携带公共参数
  // 返回配置对象
  return config
})
// 第三步:响应拦截器
request.interceptors.response.use((response)=>{
  // 成功回调
  // 简化数据
  return response.data
},(error)=>{

  // 失败回调:处理http网络问题 
  // 定义一个变量:存储网络错误信息
  let message=''
  // http状态码
  let status=error.response.status
  switch(status){
    case 401:
      message='TOKEN过期'
      break;
    case 403:
      message ='无权访问'
      break;
    case 404:
      message ='请求地址错误'
      break;
    case 500:
      message ='服务器出现问题'
      break; 
    default:
      message='网络出现问题' 
      break
  }
  // 提示错误信息
  ElMessage({
    type:'error',
    message
  })
  return Promise.reject(error)
})

// 对外暴露
export default request

测试一下封装的axios是否好用
路径在mock下的user静态路径
测试代码

import request from './utils/request';
import { onMounted } from 'vue';

// 当组件挂载完毕测试发一个请求
onMounted(()=>{
  request({
    url:'/user/login',
    method:'post',
    data:{
      username:'admin',
      password:'111111'
    }
  }).then(res=>{
    console.log(res);
    
  }).catch
})

如果成功访问,console会显示成功代码200,
在这里插入图片描述
如果失败则应该是路径问题
只需把多余的路径删除即可
在这里插入图片描述
使用请求拦截器,可以携带参数过去
在这里插入图片描述

5.11 API接口统一管理

一般需要在项目文件夹下新建API文件夹
src/api,有多少个页面使用到api就有多少个子文件夹
在这里插入图片描述
比如获取user接口数据需要进行如下操作
mock/user.ts 下的获取方式
const { username, password } = body; return { code: 200, data: { token } }
都是对象,因此type.ts类型需要写成

// 登录接口需要携带参数ts类型
export interface loginForm{
  username:String,
  password:string
}
interface dataType{
  token:string
}

// 登录接口返回数据类型
export interface loginResponseData{
  code:number,
  data:dataType
}
interface userInfo{
  userId:number,
  avatar:string,
  username:string,
  password:string,
  desc:string,
  roles:string[],
  buttons:string[],
  routes:string[],
  token:string
}
interface user{
  checkUser:userInfo
}
// 定义服务器返回用户信息相关的数据类型
export interface userResponseData{
  code:number,
  data:user
}

封装如下
在这里插入图片描述
在这里插入图片描述
部署完成之后需要进行测试

import { onMounted } from 'vue';
import {reqLogin} from './api/user'
onMounted(()=>{
  reqLogin({username:'admin',password:'111111'})
})

在这里插入图片描述

5.11 模板路由配置

安装pnpm i vue-router
src下新建文件夹router
在这里插入图片描述
配置如下
index.ts

// 通过vue-router插件实现模板的配置
import {createRouter,createWebHashHistory}from 'vue-router'
import { constantRoute } from './routers'
// 创建路由器
let  router =createRouter({
  // 路由模式hash
  history: createWebHashHistory(),
  routes:constantRoute,
  // 滚动行为
  scrollBehavior(){
    return{
      left:0,
      top:0
    }
  }
})
export default router

router.ts

// 对外暴露配置路由(常量路由)
export const constantRoute=[
  {
    // 登录
  path:'/login',
  component:()=>import('@/views/login/index.vue'),
  name:'login',//命名路由
  },
  {
    // 登录成功后展示数据的路由
    path:'/',
    component:()=>import('@/views/home/index.vue'),
    name:'layout'
  },
  {
    // 404
    path:'/404',
    component:()=>import('@/views/404/index.vue'),
    name:'404'
  },
  {
    path:'/:pathMatch(.*)*',
    redirect:'/404',//重定向redirect
    name:'Any'
  }
]

配置完毕之后需要在main.ts中引入路由,并注册

// 引入路由
import router from './router'
// 注册模板路由
app.use(router)

成功之后重启项目测试是否完成路由配置
默认路径 /
在这里插入图片描述

在这里插入图片描述
登录路径 login
在这里插入图片描述
在这里插入图片描述
报错路由 404
在这里插入图片描述

在这里插入图片描述
未知路径 重定向404
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签:axios,封装,string,request,API,router,import,路由
From: https://blog.csdn.net/ytpedancerow/article/details/143461686

相关文章

  • Springboot使用 jenkins-client 调用Jenkins REST API教程和构建 build时 报错 403
    前言:最近在工作中,遇到一个需求,使用java调用Jenkins进行全自动测试的需求于是在网上查找大量资料,可以使用jenkins-client这个工具可以调用JenkinsRESTAPI在执行GET请求获取Jenkins信息的时候没有任何问题,但是执行POST请求时,比如build构建job,create创建jo......
  • SAP ABAP开发学习——BAPI
    目录 业务对象概念​编辑业务对象浏览BAPIBAPI的浏览BAPI的调用BAPI的确认和返回BAPI的创建MM/SD常用BAPI附加:长文本修改业务对象概念业务对象浏览进入SWO3查看双击BUS2012双击下图上方红色位置可以看到BAPI方法的内容BAPI        BAPI(B......
  • 微信jsapi支付 退款接口
    微信官方退款接口文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4参数按照文档构造记录出现错误:System.Net.WebException:Theremoteserverreturnedanerror:(400)BadRequest这个是由于退款接口需要传证书证书的话是需要登录商户号进行下载a......
  • ES API,使用Kibana的开发工具用例说明
    @目录创建template,用于滚动索引判断template是否存在测试自定义解析器测试内置解析器查index信息添加document查index下document全部信息查所有template删除index查某一template信息模糊搜索+高亮显示设置滚动索引批量插入本人先关其他文章链接创建template,用于滚动索引PUT_tem......
  • FPGA实例——按键消抖和自定义IP封装
    按键消抖:简介:目前,在大部分的FPGA开发板上都带有机械按键,由于机械按键的物理特性,按键在按下和释放的过程中,存在一段时间的抖动,这就导致在识别按键的时候可以检测到多次的按键按下,而通常检测到一次按键输入信号的状态为低电平,就可以确认按键被按下了,所以我们在使用按键时往往需......
  • 服务器封装代码--关于GDAL的处理(同时涉及虚拟环境中GDAL的配置)
    一、服务器封装代码的基础操作大家可以看一下前面写的这篇博客,不涉及到特殊的包(例如GDAL),基本是可以正常封装的二、有关于GDAL的处理网上很多有关于GDAL的.whl文件网址都失效了,在公众号:遥感与深度学习中发现了可以用的.whl文件(亲测有效!)通过百度网盘分享的文件:GDAL_Lin......
  • Python数据分析NumPy和pandas(十八、从Web APIs 和 数据库中获取数据)
    一、与WebAPIs进行数据交互很多Web网站都提供公共的API,并通过JSON或其他格式提供数据。那Python也有很多种方法可以访问网站提供的API,其中一种常用的方法是通过使用requests库,使用之前需要先安装它,这里通过pip安装:pipinstall requests下面我通过GitHub网站提供的API......
  • 封装技术 | CoWoS 封装工艺
    注:几篇关于CoWoS封装的合辑,有内容重叠,未整理。一文读懂先进封装CoWoS原创大K向前冲科技词话2024年06月05日08:31广东CoWoS,全称ChiponWaferonSubstrate,翻译过来就是“芯片在晶圆上,在基板上”。这个定义听起来有些拗口,但简单来说,它是一种先进的封装......
  • 关于k8s api-server端口范围和node节点范围冲突会导致集群不正常故障总结
    1.故障背景由于需要部署新环境,于是在阿里云新建一个ack集群,部署了业务,结果整晚上的存活探针告警,新集群接近30个业务pod,整晚上将近50多条存活探针告警,这个结果明显不正常。但是查看所有pod状态事件全部正常,阿里云托管的ack也没有事件异常,第一反应确实是集群某些参数不对......
  • 亚马逊账号密码登录过程api方式
    importrequestsurl="https://www.amazon.com/?ref_=nav_signin"payload='appActionToken=Kezq0QsV3TrK0p9c%22ECdITeCs%3A5GWvT05%20wCNv7HcOA7nMU7jlyvr9MGs%208%2FYBYw0SuND8MwxwNRXaKeI3GkefXJ%2FCXoFKf0WAcn5KW%20b%20ajmR0R6NrETD4Rk%2F50CkSK5i......