vue3封装接口(自测可用)

注:这个是js版本不是ts注意

在实际的项目实战中如果我们不对接口加以管理,整篇看着就很乱,这个时候我们就要用到接口封装了。

废话不多说直接上代码!!!

首先是request.js

import axios from "axios";

// 使用环境变量来设置基础URL
const baseURL = process.env.VUE_APP_API_BASE_URL || "接口前缀http://xxxxxxxxxxxxxx";

const service = axios.create({
  baseURL: baseURL,
  timeout: 5000,
  headers: {
    "Content-type": "application/json;charset=utf-8"
  }
});

service.interceptors.request.use(config => {
  const token = localStorage.getItem("token");
  if (token) {
    config.headers['Authorization'] = 'Bearer ' + token;
  }
  return config;
}, error => {
  console.error("Request error: ", error);
  return Promise.reject(error);
});

service.interceptors.response.use(response => {
  if (response.status === 200) {
    return response.data;
  } else {
    // 可以根据需要添加更多的错误处理
    console.error("Response error: ", response);
    return Promise.reject(new Error("Error with status code " + response.status));
  }
}, error => {
  // 对常见的HTTP错误进行处理
  if (error.response) {
    // 请求已发出,服务器回复状态码不在2xx范围
    console.error("Error status: ", error.response.status);
    // 根据返回的状态码进行不同的处理
    // 例如: if (error.response.status === 401) { // 处理登录过期 }
  } else {
    // 服务器连回应都没有返回
    console.error("Network error: ", error);
  }
  return Promise.reject(error);
});

export default service;

其次api.js

post方法

// 我要用到的一些接口
import service from "@/request/index";
// 引入接口
// 如果在 JavaScript 中引入接口不需要进行类型标注
// import { ILoginData } from "@/type/login";

// 登录接口
export function index(data) {
    return service({
        url: "/index/index",
        method: "POST",
        data: data
    });
}

get方法

export function index(queryParams) {
    return service({
        url: "/index/index",
        method: "GET",
        params: queryParams
    });
}

然后home.vue

到这里就非常简单了,直接import引入相应的名称在使用就可以了

<template>
  <div>
    <div @click="inds">加载数据</div>

  </div>
</template>

<script setup>
import { ref } from 'vue';
import { index } from "@/request/api";



const inds = async () => {
  try {
    const res = await index();
    console.log(1, res);
  } catch (err) {
    console.error(2, err);
   
  } finally {
    console.log(3);
  }
};
</script>

最后封装接口请求数据

首页不需要参数,可以直接请求,那么需要参数的怎么办呢?有方法

这两种方法都行没什么不一样的

方法一

<script setup>
import { ref } from 'vue';
import { index } from "@/request/api";



const inds = async () => {
  try {
    let id = 1119;//比如接口需要id就声明id,如果是name就写name
    const res = await index({id});
    console.log(1, res);
  } catch (err) {
    console.error("失败", err);
   
  } 
};
</script>

方法二

<script setup>
import { ref } from 'vue';
import { index } from "@/request/api";



const inds = async () => {
  try {
    const res = await index({id:1119});
    console.log(1, res);
  } catch (err) {
    console.error("失败", err);
   
  } 
};
</script>

到这里就结束了感谢观看,有疑问可以在评论区写出来。

相关推荐

  1. vue3封装接口可用)

    2024-02-23 07:20:05       26 阅读
  2. Vue3图片懒加载封装定义指令

    2024-02-23 07:20:05       11 阅读
  3. Vue3封装拖拽的弹窗

    2024-02-23 07:20:05       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 07:20:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 07:20:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 07:20:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 07:20:05       20 阅读

热门阅读

  1. 大数据专业python毕业设计题目分享

    2024-02-23 07:20:05       22 阅读
  2. 粉笔申论规范词积累(基层治理)

    2024-02-23 07:20:05       27 阅读
  3. mvcc 并发事务的控制

    2024-02-23 07:20:05       29 阅读
  4. websocket 实现原理和技术方案

    2024-02-23 07:20:05       35 阅读
  5. 如何为PostgreSQL设置自增主键?

    2024-02-23 07:20:05       25 阅读
  6. mysql 迁移-data目录拷贝方式

    2024-02-23 07:20:05       31 阅读
  7. Hexo + Github Action部署博客

    2024-02-23 07:20:05       33 阅读
  8. [ARC001B] リモコン

    2024-02-23 07:20:05       30 阅读
  9. 设计模式-工厂方法模式

    2024-02-23 07:20:05       25 阅读
  10. 一次学习引发我对于 synchronized 的再理解

    2024-02-23 07:20:05       26 阅读