• vue3封装接口(自测可用)


    注:别忘记安装axios

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

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

    首先是request.js

    1. import axios from "axios";
    2. // 使用环境变量来设置基础URL
    3. const baseURL = process.env.VUE_APP_API_BASE_URL || "接口前缀http://xxxxxxxxxxxxxx";
    4. const service = axios.create({
    5. baseURL: baseURL,
    6. timeout: 5000,
    7. headers: {
    8. "Content-type": "application/json;charset=utf-8"
    9. }
    10. });
    11. service.interceptors.request.use(config => {
    12. const token = localStorage.getItem("token");
    13. if (token) {
    14. config.headers['Authorization'] = 'Bearer ' + token;
    15. }
    16. return config;
    17. }, error => {
    18. console.error("Request error: ", error);
    19. return Promise.reject(error);
    20. });
    21. service.interceptors.response.use(response => {
    22. if (response.status === 200) {
    23. return response.data;
    24. } else {
    25. // 可以根据需要添加更多的错误处理
    26. console.error("Response error: ", response);
    27. return Promise.reject(new Error("Error with status code " + response.status));
    28. }
    29. }, error => {
    30. // 对常见的HTTP错误进行处理
    31. if (error.response) {
    32. // 请求已发出,服务器回复状态码不在2xx范围
    33. console.error("Error status: ", error.response.status);
    34. // 根据返回的状态码进行不同的处理
    35. // 例如: if (error.response.status === 401) { // 处理登录过期 }
    36. } else {
    37. // 服务器连回应都没有返回
    38. console.error("Network error: ", error);
    39. }
    40. return Promise.reject(error);
    41. });
    42. export default service;

    其次api.js

    post方法

    1. // 我要用到的一些接口
    2. import service from "@/request/index";
    3. // 引入接口
    4. // 如果在 JavaScript 中引入接口不需要进行类型标注
    5. // import { ILoginData } from "@/type/login";
    6. // 登录接口
    7. export function index(data) {
    8. return service({
    9. url: "/index/index",
    10. method: "POST",
    11. data: data
    12. });
    13. }

    get方法

    1. export function index(queryParams) {
    2. return service({
    3. url: "/index/index",
    4. method: "GET",
    5. params: queryParams
    6. });
    7. }

     方法(补充)

    方法很多就看用那一些了,前面两种是基础格式,这个方法进行了一些简单的配置,调用和前面一样。

    1. export function index(data) {
    2. // 创建一个FormData实例
    3. const formData = new FormData();
    4. // 假设data对象是这样的:{ username: 'user1', password: 'pass', file: FileObject }
    5. // 你可以循环遍历data对象,并添加到formData中
    6. for (const key in data) {
    7. formData.append(key, data[key]);
    8. }
    9. // 发送multipart/form-data请求
    10. return service({
    11. url: "/mobile/login",
    12. method: "POST",
    13. data: formData,
    14. headers: {
    15. 'Content-Type': 'multipart/form-data'
    16. }
    17. });
    18. }

    然后home.vue

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

    1. <template>
    2. <div>
    3. <div @click="inds">加载数据</div>
    4. </div>
    5. </template>
    6. <script setup>
    7. import { ref } from 'vue';
    8. import { index } from "@/request/api";
    9. const inds = async () => {
    10. try {
    11. const res = await index();
    12. console.log(1, res);
    13. } catch (err) {
    14. console.error(2, err);
    15. } finally {
    16. console.log(3);
    17. }
    18. };
    19. </script>

    最后封装接口请求数据

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

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

    方法一

    1. <script setup>
    2. import { ref } from 'vue';
    3. import { index } from "@/request/api";
    4. const inds = async () => {
    5. try {
    6. let id = 1119;//比如接口需要id就声明id,如果是name就写name
    7. const res = await index({id});
    8. console.log(1, res);
    9. } catch (err) {
    10. console.error("失败", err);
    11. }
    12. };
    13. </script>

    方法二

    1. <script setup>
    2. import { ref } from 'vue';
    3. import { index } from "@/request/api";
    4. const inds = async () => {
    5. try {
    6. const res = await index({id:1119});
    7. console.log(1, res);
    8. } catch (err) {
    9. console.error("失败", err);
    10. }
    11. };
    12. </script>

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

  • 相关阅读:
    bp神经网络解决什么问题,bp神经网络的改进方法
    基于springboot的毕业设计选题系统的设计与实现-计算机毕业设计源码+LW文档
    Vue项目的记录(五)
    Zigbee—网络层地址分配机制
    opencv将32位深图片合成视频跳帧解决办法
    springboot微信点餐系统的设计与实现毕业设计源码221541
    神经网络算法的基本原理,神经网络算法通俗解释
    kubectl按pod创建时间排序获取列表
    MySQL数据库
    【MySQL】------数据库连接
  • 原文地址:https://blog.csdn.net/A12536365214/article/details/136241919