首页 > 其他分享 >vue3 封装api接口

vue3 封装api接口

时间:2023-07-15 18:00:18浏览次数:39  
标签:case axios 封装 break api vue3 return message response

新建axiosj.ts

import axios from 'axios';
import { showMessage } from "./status";   // 引入状态码文件
import { ElMessage } from 'element-plus'  // 引入el 提示框,这个项目里用什么组件库这里引什么

// 设置接口超时时间
axios.defaults.timeout = 60000;

// 请求地址,这里是动态赋值的的环境变量,下一篇会细讲,这里跳过
// @ts-ignore
axios.defaults.baseURL = import.meta.env.VITE_API_DOMAIN;   

//http request 拦截器
axios.interceptors.request.use(
  config => {
  // 配置请求头
    config.headers = {
      //'Content-Type':'application/x-www-form-urlencoded',   // 传参方式表单
      'Content-Type':'application/json;charset=UTF-8',        // 传参方式json
      'token':'80c483d59ca86ad0393cf8a98416e2a1'              // 这里自定义配置,这里传的是token
    };
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

//http response 拦截器
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    const {response} = error;
    if (response) {
      // 请求已发出,但是不在2xx的范围
      showMessage(response.status);           // 传入响应码,匹配响应码对应信息
      return Promise.reject(response.data);
    } else {
      ElMessage.warning('网络连接异常,请稍后再试!');
    }
  }
);

// 封装 GET POST 请求并导出
export function request(url='',params={},type='POST'){
//设置 url params type 的默认值
return new Promise((resolve,reject)=>{
  let promise
  if( type.toUpperCase()==='GET' ){
    promise = axios({
      url,
      params
    })
  }else if( type.toUpperCase()=== 'POST' ){
    promise = axios({
      method:'POST',
      url,
      data:params
    })
  }
  //处理返回
  promise.then(res=>{
    resolve(res)
  }).catch(err=>{
    reject(err)
  })
})
}

新建状态码文件:

export const showMessage = (status:number|string) : string => {
    let message:string = "";
    switch (status) {
        case 400:
            message = "请求错误(400)";
            break;
        case 401:
            message = "未授权,请重新登录(401)";
            break;
        case 403:
            message = "拒绝访问(403)";
            break;
        case 404:
            message = "请求出错(404)";
            break;
        case 408:
            message = "请求超时(408)";
            break;
        case 500:
            message = "服务器错误(500)";
            break;
        case 501:
            message = "服务未实现(501)";
            break;
        case 502:
            message = "网络错误(502)";
            break;
        case 503:
            message = "服务不可用(503)";
            break;
        case 504:
            message = "网络超时(504)";
            break;
        case 505:
            message = "HTTP版本不受支持(505)";
            break;
        default:
            message = `连接出错(${status})!`;
    }
    return `${message},请检查网络或联系管理员!`;
};

导出案例

import { request } from './axios'
//导出 login
   export function login  (params) {      return request('/admin-api/system/auth/login',params, 'post')    }

使用

<script setup>
import { onMounted } from "vue";
import {login} from '/src/api/api.ts'

onMounted(()=>{
  login1()
})

const login1 = async () => {
  const loginParams = {
    username: 'test',
    password: 'test',
  }
  const res = await login()
}
</script>

 

标签:case,axios,封装,break,api,vue3,return,message,response
From: https://www.cnblogs.com/7788mmhh/p/17440361.html

相关文章

  • [TSG开发日志4]算法组件、个人编写的库文件如何封装成DLL,如何更好地对接软件开发?
    写在前面这个内容确实是我有点疏忽了,我以为做算法的同事应该多少对这方面会有点了解的。但是我想了一下我刚毕业的时候,确实对这方面的理解不深,查了很多资料才勉强搞懂什么意思,也是后来随着工程学习的愈加深入,才渐渐了解了在C++开发中动态链接库的重要性及如何编写。一般在说一个......
  • axios详解以及完整封装方法
    """一、axios是什么Axios是一个基于promise网络请求库,作用于node.js和浏览器中。它是isomorphic的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生node.jshttp模块,而在客户端(浏览端)则使用XMLHttpRequests。axios有以下特性:从浏览器创建X......
  • 微信个人号机器人,E云API二次开发
    **个人微信开发API****简要描述:**-登录E云平台**请求URL:**-http://域名地址/member/login-域名地址+开发者账号密码:后台系统自助开通**请求方式:**-POST**请求头Headers:**-Content-Type:application/json  **请求参数示例**```clike{"account":"18611......
  • 获得lazada商品详情 API 返回值说明
    ​ item_get-获得lazada商品详情 注册开通lazada.item_get公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]ca......
  • vue3 为什么使用 hooks?
    目的为了解决在组件中共享逻辑和状态的问题。 hooks提供了一种更简洁和直观的方式来共享逻辑和状态。vue3中的hooks是基于函数的组件模型,通过在函数组件内部使用特定的hook函数来实现。每个hook函数都有特定的用途,例如:useState用于创建和管理状态,useEffect用于......
  • Swagger 管理 API 的一些经验分享
    Swagger是一款开源的API设计工具,主要用于构建、设计、编写和使用RESTfulWeb服务。可以帮助开发人员设计和编写API,以及创建出色的API文档。Swagger是一个强大的开源框架,支持API开发全生命周期,包括设计、构建、文档和使用。Swagger的核心部分是Swagger规范(Specifica......
  • SpringBoot+Vue3+MySQL集群 开发健康体检双系统
    第1章课程介绍试看4节|38分钟观看项目演示,熟悉大健康体检项目主要功能。掌握学习本课程的最佳方法,以及如何利用在线手册学习和答疑。第2章大健康体检项目全栈环境搭建16节|218分钟利用虚拟机或者云主机安装Linux系统和Docker环境,部署MongoDB、Redis、Minio和RabbitMQ等中......
  • Amazon SP API拉取分类,五点,描述和关键字
    1.用asin拉取五点,品牌,和分类,每次最多20个(但拉取listing的时候法国和日本站点没有返回asin)$result=$requestReport->applicationreport($account->merchant_id,strtolower($account->site),'/catalog/2022-04-01/items?identifiers=B0BNVT65X4,B0BTBWXLCD,B0BTBYS33P&identi......
  • Vue2或Vue3中实现页面锚点滚动(结合AntDesign a-steps
    核心代码 onStepChange(current){ this.current=current; document.querySelector(`[id='${current}']`).scrollIntoView({ behavior:"smooth",//定义过渡动画instant立刻跳过去smooth平滑过渡过去 block:"start",//定义垂直滚动方向的对齐start顶部(......
  • vue3项目 运行 报错 Cannot assign to "b" because it is a constant
    环境依赖node18.16.0vite4.4.4vue 3.2.47背景当前错误与环境依赖关系不大,是由于我在打包的文件写的代码错误导致的,一般情况不会有这个错报错信息X[ERROR]Cannotassignto"b"becauseitisaconstantThesymbol"b"wasdeclaredaconstanthere:原因将r......