基础Axios封装与使用(基本流程步骤)

这篇具有很好参考价值的文章主要介绍了基础Axios封装与使用(基本流程步骤)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、axios是什么?

二、axios的使用及封装(基于vue-cli)

一、安装axios

二、搭建一个目录结构(考虑区分开发和生产环境)

三、axios的基础封装

四、另种封装 — 简单封装

五、axios封装后 业务请求 的封装使用

六、在页面代码中使用封装的业务请求app.vue

三、可扩展


一、axios是什么?

        axios是基于promise封装的请求库,它可作用于浏览器和NODE,相较于普通的ajax请求,它自身新加了拦截器、为请求添加附加条件等新特性。

二、axios的使用及封装(基于vue-cli)

一、安装axios

npm install axios

二、搭建一个目录结构(考虑区分开发和生产环境)

axios封装和使用,axios,ajax,vue,前端,javascript

        说明:.env.dev 和 .env.prod 是在由开发环境切换到生产环境打包或启动时使用。因为在封装axios时,你进需要通过node中的环境变量process.env即可取到当前加载的配置文件,通过配置来判断不同的阶段。下面解释一下两个文件如何放?以及如何配置使用?【.env.dev  .end.prod】


//在使用vue-cli构建的项目中,在根目录下【与vue.config.js同级】新建 .env.dev 和 .env.prod 文件
//该文件格式必须使用 = 的键值对

//NODE_ENV为固定键  值为当前处于开发环境
NODE_ENV = "development" 
 
//BASE_URL为固定键  值为当前的基础请求地址【该值也可在axios封装时写】
BASE_URL = "http://123.com.cn"   

//以上两个键为配置文件中可直接使用的键,但是要在配置文件中使用其他键,则必须添加前缀 VUE_APP_

//【VUE中】所有解析出来的环境变量都可以在 public/index.html 中以 【HTML 插值】中的方式使用。
/*
    <%= value %> 直接插值
    <%- value%> 可以转换成html标签的
    <link href="<%= BASE_URL %>favicon.ico">
*/

该配置可在切换生产和开发环境时通过指令一键切换。通过执行不同的 npm run dev等启动服务【package.json】

"scripts": {
    "serve": "vue-cli-service serve",
    "dev": "vue-cli-service serve --mode dev",
    "prod": "vue-cli-service serve --mode prod",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  }

三、axios的基础封装

        提前考虑:1.要区分是开发环境或生产环境  2.超时问题  3.代理问题   4.基础地址问题    5.拦截器需要做什么   6.权限添加验证cookie 或 tooken。【http.js】

import axios from "axios";

//不同环境下的地址
let baseURL = "";
//node中的环境变量process.env,也就是我们新增开发、生产的配置文件
if(process.env.NODE_ENV === "development"){
    baseURL = "http://localhost:8080"  //这里可在vue.config.js做一个代理【代理代码见下】
}else{
    baseURL = "123.com.cn"
}

//创建axios实例
const request = axios.create({
    timeout: 5000,
    baseURL:baseURL
});

//所有请求设置了授权头信息【请求头中设置cookie信息,一直携带,判权】
axios.defaults.headers.common['Authorization'] = `${cookie}`;
//这里是设置发送json格式参数
axios.defaults.headers.post['Content-Type'] = 'application/json';

//请求拦截器
request.interceptors.request.use(
    //发送之前想要做些什么
    config => {
        // token是否过期,是否重新登陆等等
        // 此处可修改一些基本数据
        // config[baseURL,[data,[headers,[method,[timeout,[url]   等
        //        基础地址,请求参数,头部, 请求方式, 超时,  请求地址  等

        // config.headers.Cookie = "110110110110110110";
        return config;
    },
    //方法返回一个带有拒绝原因的 Promise 对象。
    error => Promise.reject(error)
);
/**************移除拦截器****************/
    // 动态移除
    // const me = axios.interceptors.request.use(function () {/*...*/});
    // axios.interceptors.request.eject(me);
/***************************************/

//响应拦截器(对请求结束后进行一些操作,,例如:统一收集报错)
request.interceptors.response.use(
    //请求成功
    res => res.status === 200 ? Promise.resolve(res) : Promise.reject(res),
    //请求失败
    error => {
        //可根据不同的状态去区分不同的错误,达到不同效果
        if(error.response.status){
            error.response.status === 404 ? alert("请求不存在!!") : alert("其他");
        }
        return Promise.reject(error);
    }
);

export default request

在vue.config.js配置文件中对我们的请求做一个代理。

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave:false,//关闭语法检查
  //方式一
/* 
   devServer:{//代理
     proxy:'http://localhost:3000'
   }
*/
   //方式二
   devServer:{
     proxy:{
      "/":{
        target:"https:localhost:3000",//代理到的服务器地址
        ws:false,//是否对websocket启动代理
        changeOrigin:true,//用于控制请求头中的值
      }
     }
   }
})

四、另种封装 — 简单封装

        在项目中,如果请求数量少,请求简单,限制条件较少,则可使用一种简单的方法进行封装调用。

import axios from "axios";

//封装对应的get请求
const get = (url, params) => {
    return new Promise((resolve, reject) => {
        axios.get(url, {params})
        .then(res => resolve(res))
        .catch(err => reject(err));
    });
}
//封装对应的post请求
const post = (url, param) => {
    return new Promise((resolve, reject) => {
        axios.post(url, param)
        .then(res => resolve(res))
        .catch(err => reject(err));
    });
}

五、axios封装后 业务请求 的封装使用

        建立一个专门存放业务请求的文件夹api【这里根据业务需求:有的会存在两个文件夹,接口文件和接口业务执行文件】,api文件中放各个业务js的文件,并且设置统一的导出文件index.js即可

业务1.js

//封装的请求
import axios from '../http'
//参数序列化方法 <最后的结果也就是&a=1&b=2>
import qs from 'qs'

export default {
    //登录
    loginIn(params){
        return axios.post('/loginIN',qs.stringify(params));
    },
    //退出
    loginOut(params){
        return axios.post('/loginIN',params);
    },
    //注册
    loginUp(params){
        return axios.get('/loginIN',{params});
    }
}

业务2.js

import axios from '../http'
import qs from 'qs'
export default {
    //更新列表
    refreshList(params){
        return axios.post('/refreshList',qs.stringify(params));
    },
    //更新提示
    refreshTips(params){
        return axios.post('/loginIN',params);
    }
}

业务3.js

import axios from '../http'

export default {
    poetryPost(params){
        return axios.post('/all.json',params);
    },
    poetryGet(){
        return axios.get('/all.json');
    }
}

index.js

import loginAPI from './业务1'
import refreshData from './业务2'
import initPoetry from './业务3'

export {
    loginAPI,
    refreshData,
    initPoetry
}

六、在页面代码中使用封装的业务请求app.vue

        原先将axios放在vue的实例身上,这样就可以直接用this;但是v3的this没有了,所以现在也不推荐这样做了。应该避免每次都使用axios.create创建实例,实例过多既会占据内存也会影响效率。

<template>
  <div>
    <h1>诗句:{{content}}</h1>
    <h2>诗句:{{content2}}</h2>
  </div>
</template>

<script>
//使用不区分V2、V3
import { initPoetry } from './axiosRequest/api/index'
export default {
    data(){
      return {
        content:"",
        content2:""
      }
    },
    mounted(){
      initPoetry.poetryPost({a:1}).then(
        res => this.content = res.data.content,
        err => console.log(err)
      ).catch(
        err => console.log(err)
      );
      initPoetry.poetryGet().then(
        res => this.content2 = res.data.content,
        err => console.log(err)
      ).catch(
        err => console.log(err)
      );
    }
}
</script>

三、可扩展

        至此一个基于vue-cli搭建项目的基础axios封装就完成了,在此基础上可将封装进行扩展,使得更丰富与健壮。文章来源地址https://www.toymoban.com/news/detail-736728.html

到了这里,关于基础Axios封装与使用(基本流程步骤)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 原生js创建get/post请求以及封装方式、axios的基本使用

    原生js创建get请求 原生js创建post请求 原生get和post封装方式1 原生get和post封装方式2 axios的基本使用

    2024年02月21日
    浏览(41)
  • 前端框架前置学习(3) AJAX原理 XMLHttpRequest,Promise,简易axios函数封装

    1.获取图片文件对象  // 文件选择元素-change改变事件 document.querySelector(\\\'.upload\\\').addEventListener(\\\'change\\\', e = {       // 1. 获取图片文件       console.log(e.target.files[0]) 2.使用FormData携带文件  // 2. 使用 FormData 携带图片文件       const fd = new FormData()       fd.append(\\\'img\\\', e.target.files[0

    2024年02月03日
    浏览(52)
  • Ajax和axios基础

    Asynchronous JavaScript And XML 异步的JavaScript和XML 作用 数据交换: 通过Ajax可以给服务器发送请求,服务器将数据直接响应回给浏览器. 异步交互: 可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术. 同步和异步 同步发送请求: 浏览器发送请求给服务器,服务

    2024年04月28日
    浏览(26)
  • axios是什么?axios使用axios和ajax

    Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境。它是由 GitHub 用户 mzabriskie 开发的,并且得到了广泛的社区支持。Axios 的设计目标是提供一种简洁、易用且功能强大的 HTTP 请求方式,以替代传统的 Ajax(Asynchronous JavaScript and XML)技术。 Axios 与 Ajax 的比较 Aj

    2024年04月15日
    浏览(35)
  • axios封装/基础配置

    步骤:装包 - 封装axios实例 -调用实例发送请求 1. 装包 npm install axios 2. 封装 axios基础配置 3. 调用实例 发送请求 参考: 起步 | Axios 中文文档 | Axios 中文网 (axios-http.cn)

    2024年02月09日
    浏览(35)
  • 【AJAX框架】AJAX入门与axios的使用

    在现代Web开发中,异步JavaScript和XML(AJAX)已经成为不可或缺的技术之一。AJAX使得网页能够在不刷新整个页面的情况下与服务器进行数据交互,为用户提供更加流畅和动态的体验。本文将介绍AJAX的基本概念,并深入探讨如何使用axios这一强大的JavaScript库进行AJAX请求。 AJAX的核

    2024年01月24日
    浏览(46)
  • 自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南

    一、构建方法 确定工具库的需求和功能:在开始构建工具库之前,你需要明确你的工具库需要包含哪些方法及工具,以及这些工具或方法应该具备哪些功能。这有助于你更好地规划你的开发工作。 编写工具代码:使用你熟悉的前端框架(如React、Vue等)编写工具代码。确保你

    2024年04月14日
    浏览(44)
  • ajax+axios——统一设置请求头参数——添加请求头入参——基础积累

    最近在写后台管理系统(我怎么一直都只写管理系统啊啊啊啊啊啊啊),遇到一个需求,就是要在原有系统的基础上,添加一个仓库的切换,并且需要把选中仓库对应的id以请求头参数的形式传递到每一个接口当中。。。 如上图所示:需要在接口请求头中添加一个 Storeid 参数

    2024年01月25日
    浏览(47)
  • vue3【使用axios并封装axios请求】

    第一步:安装axios 第二步:编写请求文件 新建request.js 简单的axios封装,里面相关提示信息,自己可以引入element-plus去添加

    2024年02月04日
    浏览(59)
  • 【electron+axios】如何在electron中封装使用axios,从下载到使用保姆级教程

    前期准备:我们需要搭建好electron项目,并配置好node,npm等环境后进行以下操作。如何搭建electron项目?请参考此章节:electron项目的搭建并集成串口工具 一、准备工作,下载axios依赖并在页面中引用 1.下载axios 与vue同样的,都是使用npm下载依赖后进行引入。代码如下 2.引用

    2024年03月27日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包