axios封装,支持get、post、put、delete、head、options、trace方法,及在vue3中使用

说明:以下代码主要演示axios在vue3中的封装及使用

一、若未安装axios,请先npm i axios 下载依赖

npm i axios

二、安装axios后,下一步进行axios的请求拦截和响应拦截的封装

2.1先放上对应目录结构


文件介绍:
htttp/request.js — 对应axios请求拦截和响应拦截
http/index.js — 对应axios支持get、post、put、delete、head、options、trace方法
API/home_api.js — 对应使用axios传递url及参数
views/index.vue — 引入api并发送请求

2.2 http/request.js代码
// 引入axios模块,在此之前需下载axios依赖:npm i 'axios'
import axios from "axios";

const request = axios.create({
    baseURL: "https://xxx.com", //请求域名,请填写项目实际请求域名
    timeout: 10000, //超时配置,默认为0则不超时
});
// 请求拦截器
request.interceptors.request.use((config) => {
    // 此处可在发送请求前配置请求头header,包括token以及请求参数的处理
    const token = localStorage.getItem("token");
    if (token) {
        config.headers.Authorization = `Bearer ${token}`;
    }
    config.headers["Content-Type"] = "application/json";
    return config;
});
// 响应拦截器
request.interceptors.response.use(
    (response) => {
        // 此处服务器响应状态码为200
        // 可对响应数据进行处理
        return response.data;
    },
    (error) => {
        // 此处处理服务器响应状态码不为200的错误
        return Promise.reject(error);
    }
);
export default request;

2.3 http/index.js代码
import request from "./request.js";
const http = {
    //---封装GET请求---
    get(url, data) {
        return request.get(url, { params: data });
    },
    // ---封装POST请求---
    post(url, data) {
        return request.post(url, data);
    },
    // ---封装PUT请求---
    put(url, data) {
        return request.put(url, data);
    },
    // ---封装DELETE请求---
    del(url, data) {
        return request.delete(url, { data });
    },
    // ---封装HEAD请求---
    head(url, data) {
        return request.head(url, { data });
    },
    // ---封装OPTIONS请求---
    options(url, data) {
        return request.options(url, { data });
    },
    // ---封装TRACE请求---
    trace(url, data) {
        return request.trace(url, { data });
    },
};
export default http;

2.4 API/home_api.js代码
import http from "@/http/index.js"
// 获取数据
export function getDataApi(data) {
    return http.get('/api/getdata',data)//url对应后端请求地址,请使用实际url
}
2.5 views/index.vue代码
<template>
    <div>axios封装演示页面</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import { getDataApi } from "@/API/home_api";
onMounted(() => {
    getDataApi({})
        .then((res) => {
            console.log("成功:", res);
        })
        .catch((res) => {
            console.log("失败:", res);
        });
});
</script>
<style scoped></style>

若需在react中使用,流程基本一致

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue通常使用Axios作为Http库来发送HTTP请求。下面是一个通用的Axios封装,可以用于发送get、put、postdelete请求。 首先,我们需要在项目安装Axios依赖。可以使用npm或yarn命令来安装: ``` npm install axios ``` 或者 ``` yarn add axios ``` 然后,我们可以在项目创建一个utils文件夹,并在其创建一个http.js文件。在http.js文件,我们可以编写通用的Axios封装代码: ```javascript import axios from 'axios'; // 创建一个axios实例 const instance = axios.create({ baseURL: 'http://api.example.com' // 设置请求的默认基本URL }); // 请求拦截器,可以在请求发送之前做一些处理,比如添加请求头 instance.interceptors.request.use( config => { // 在请求发送之前添加一个Authorization请求头(如果需要) config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token'); return config; }, error => { return Promise.reject(error); } ); // 响应拦截器,可以在请求返回之后做一些处理,比如处理错误信息 instance.interceptors.response.use( response => { // 在请求成功返回之后处理响应数据 return response; }, error => { // 在请求失败返回之后处理错误信息 return Promise.reject(error.response.data); } ); // 封装get请求 export const get = (url, params) => { return instance.get(url, { params }); }; // 封装put请求 export const put = (url, data) => { return instance.put(url, data); }; // 封装post请求 export const post = (url, data) => { return instance.post(url, data); }; // 封装delete请求 export const del = url => { return instance.delete(url); }; ``` 以上是一个简单的对Axios进行封装的例子。你可以根据自己的项目需求进行相应的修改和扩展。在组件使用get、put、postdelete方法来发送不同类型的请求。示例代码如下: ```javascript import { get, put, post, del } from '@/utils/http'; // 使用get请求 get('/api/users').then(response => { console.log(response.data); }).catch(error => { console.error(error); }); // 使用put请求 put('/api/user/1', { name: 'John', age: 30 }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); // 使用post请求 post('/api/user', { name: 'John', age: 30 }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); // 使用delete请求 del('/api/user/1').then(response => { console.log(response.data); }).catch(error => { console.error(error); }); ``` 以上就是一个通用的Axios封装,可以用于发送get、put、postdelete请求。通过这种封装,可以简化和统一项目的HTTP请求处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值