vue3如何封装接口

简介: vue3如何封装接口

在Vue 3中封装接口,通常可以使用axios或类似的库来进行网络请求,并将请求封装成一个独立的模块,方便在应用中重复使用和管理。下面是一个简单的示例,演示如何在Vue 3中封装接口

1,首先 安装并导入 axios库  可以使用npm或ayrn来安装

npm install axios --save

2,创建一个,api.js文件来管接口封装:

// api.js
import axios from 'axios';
 
const API_BASE_URL = 'https://api.example.com'; // 根据实际情况设置基础URL
 
const apiClient = axios.create({
  baseURL: API_BASE_URL,
  // 其他axios配置选项
});
 
// 封装具体的接口请求函数
const api = {
  async getPosts() {
    try {
      const response = await apiClient.get('/posts');
      return response.data;
    } catch (error) {
      console.error('获取帖子失败:', error);
      throw error;
    }
  },
 
  async createPost(postData) {
    try {
      const response = await apiClient.post('/posts', postData);
      return response.data;
    } catch (error) {
      console.error('创建帖子失败:', error);
      throw error;
    }
  },
 
  // 可以继续添加其他接口请求函数
};
 
export default api;

3.在Vue组件中使用封装的接口:

<template>
  <div>
    <ul>
      <li v-for="post in posts" :key="post.id">
        {{ post.title }}
      </li>
    </ul>
    <form @submit.prevent="submitForm">
      <input type="text" v-model="newPost.title" placeholder="请输入标题">
      <button type="submit">提交</button>
    </form>
  </div>
</template>
 
<script>
import { ref, reactive } from 'vue';
import api from './api'; // 导入封装的接口
 
export default {
  setup() {
    const posts = ref([]); // 使用ref定义一个响应式变量
    const newPost = reactive({ title: '' }); // 使用reactive定义一个响应式对象
 
    const fetchPosts = async () => {
      try {
        const data = await api.getPosts(); // 调用封装的接口函数
        posts.value = data;
      } catch (error) {
        // 处理错误
      }
    };
 
    const submitForm = async () => {
      try {
        await api.createPost(newPost); // 调用封装的接口函数
        newPost.title = ''; // 清空输入框
        fetchPosts(); // 重新获取帖子列表
      } catch (error) {
        // 处理错误
      }
    };
 
    fetchPosts(); // 在组件初始化时获取帖子列表
 
    return {
      posts,
      newPost,
      submitForm,
    };
  },
};
</script>
相关文章
|
2天前
|
JavaScript 前端开发
在 JeecgBoot 项目中基于 Vue 3 配置多页面入口
本文介绍了在JeecgBoot Vue 3项目中配置多页面入口的步骤。首先,确保下载了项目源码,然后在项目根目录创建`home.html`作为新页面模板。接着,在`src`下建立`multiPage/home`目录,包含`App.vue`和`main.ts`文件以构建新页面。最后,更新`build/vite/plugin/html.ts`中的`htmlPlugin`以支持多页面配置。完成这些步骤后,项目将具备管理多个独立页面的能力。
15 4
|
12天前
vue3【实战】语义化首页布局
vue3【实战】语义化首页布局
30 2
|
12天前
|
存储 容器
vue3【实战】来回拖拽放置图片
vue3【实战】来回拖拽放置图片
20 2
|
12天前
|
JavaScript 开发工具 开发者
vue3【提效】使用 VueUse 高效开发(工具库 @vueuse/core + 新增的组件库 @vueuse/components)
vue3【提效】使用 VueUse 高效开发(工具库 @vueuse/core + 新增的组件库 @vueuse/components)
41 1
|
12天前
|
API
Pinia 实用教程【Vue3 状态管理】状态持久化 pinia-plugin-persistedstate,异步Action,storeToRefs(),修改State的 $patch,$reset
Pinia 实用教程【Vue3 状态管理】状态持久化 pinia-plugin-persistedstate,异步Action,storeToRefs(),修改State的 $patch,$reset
22 1
|
12天前
|
JavaScript
vue3 【提效】自动注册组件 unplugin-vue-components 实用教程
vue3 【提效】自动注册组件 unplugin-vue-components 实用教程
20 1
|
6天前
【vue3】Argumnt of type ‘history:RouterHistory;}is not assignable to paraeter of type ‘RouterOptions‘.
【vue3】Argumnt of type ‘history:RouterHistory;}is not assignable to paraeter of type ‘RouterOptions‘.
6 0
|
6天前
|
JavaScript
【vue3】vue3中路由hash与History的设置
【vue3】vue3中路由hash与History的设置
11 0
|
6天前
|
编解码 前端开发
【Vue3】解决电脑分辨率125%、150%及缩放导致页面变形的问题
【Vue3】解决电脑分辨率125%、150%及缩放导致页面变形的问题
35 0
|
6天前
|
JavaScript
【vue】 vue 翻页时钟制作,vue2、vue3
【vue】 vue 翻页时钟制作,vue2、vue3
19 0