首页 > 其他分享 >在vue中使用axios的步骤(保姆级)

在vue中使用axios的步骤(保姆级)

时间:2023-05-05 11:35:25浏览次数:28  
标签:axios return 请求 vue request api 保姆 data

一、基础用法

1.安装axios

npm i axios

2.引入axios

// 引入axios
import axios from 'axios'

3使用

      // 发起一个post请求
axios({
  method: 'post',
  url: 'http://192.168.0.88:8888/api/private/v1/login',
  data: {
    username: 'admin',
    password: '123456'
  }
});

二、进阶用法

根据某些配置项将公共的部分封装起来重复利用

1.准备封装文件

创建一个request.js 的文件用来存放封装的内容

// 引入axios
import axios from "axios";
// 1.准备baseurl
let baseUrl = "";
// 2.创建新的axios实例  service
const service = axios.create({
  baseURL: baseUrl,
  // 超时时间
  timeout: 2000,
  headers: { "X-Custom-Header": "foobar" },
});
//   3.添加请求拦截器
// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么.
    config.headers.Authorization = localStorage.getItem("cms-token");
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
// 4.添加响应拦截器
// 添加响应拦截器
service.interceptors.response.use(
  (response) => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // 手动清除 Toast

    return response.data;
  },
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么

    return Promise.reject(error);
  }
);
// 5.向外抛出实例对象
export default service

2.直接使用

//先引入
import request from '../utils/request'

//使用
request({
        url:'/login',
        data:{
          username: 'admin',
          password: '123456'
        }
      })

3.通过api管理的方式进行使用

3.1 创建api文件夹用来统一管理接口

建议api中的文件对应view中的文件目录

3.2 创建对应的js文件

//先引入
import request from '../utils/request'

// 向外暴露封装的请求结果

export const Login = (data)=>{
    // 以返回值的形式将请求结果返回出去
    return request({
        url:'/login',
          data:{
            username: 'admin',
            password: '123456'
          }
    })

}

注意:get请求的时候要通过params进行传值

export const GetList = (params)=>{
    // 以返回值的形式将请求结果返回出去
    return request({
        url:'/users',
        method:'get',
        params
    })

}

3.3使用方式

在要使用的vue文件中引入api文件夹中对应的js文件,通过结构赋值的方式获取文件中的方法

import { Login } from '../api/user'

// 在对应的方法中使用
  Login()

3.4处理返回值

axios 返回的是Promise格式的数据我们可以通过async / awite 进行数据处理

 async login(){
      // 在对应的方法中使用 谁调用谁传值
     let {data,meta} = await Login({
            username: 'admin',
            password: '123456'
          });
          console.log(data,meta);

    }  

3.5拿到的值就可以赋值给data中

  async login(){
      // 在对应的方法中使用 谁调用谁传值
     let {data,meta} = await Login({
            username: 'admin',
            password: '123456'
          });
          // 将获取到的值传递给data中
          this.token = data.token
    }

配置代理

devServer: {
    host: 'localhost',//本地地址
    port: '8080',//端口号
    hot: true,//热更新自动刷新
    open: true,//自动打开
    overlay: {  //当出现编译错误或警告时,在浏览器中显示全屏覆盖。只显示错误信息不提示警告情况限制是
      warning: false,
      error: true
    },
    proxy: {
      "/api": {
        target: 'http://192.168.0.88:8888/api/private/v1',//代理地址 凡是使用/api
        changeOrigin: true,//允许跨域请求
        secure: false,
        pathRewrite: { //重写路径 替换请求地址中的指定路径
          ['^/api']: '/' //将请求地址中的api替换为空
        }
      }
    }
  }

标签:axios,return,请求,vue,request,api,保姆,data
From: https://www.cnblogs.com/lixiaosong/p/17373646.html

相关文章

  • 基于SqlSugar的开发框架循序渐进介绍(29)-- 快速构建系统参数管理界面-Vue3+ElementPlus
    在随笔《基于SqlSugar的开发框架循序渐进介绍(28)--快速构建系统参数管理界面》中介绍了基于SqlSugar开发框架,构建系统参数管理的后端API部分,以及WInform界面部分内容,本篇随笔介绍基于Vue3+ElementPlus的前端界面开发过程。1、Winform端界面的回顾系统参数的信息,设计为包含一个大......
  • 前端VUE自动检测版本更新
    前言当用户在当前站点停留时间比较长,中途站点进行升级更新之后,用户如果不刷新页面就任然停留在旧的页面里,如何让用户收到一个提示,引导用户进行更新操作呢?下面给大家介绍如何站点更新如何在生产环境提示用户更新,进行页面刷新操作,核心原理其实很简单。一、思路1,每隔一小段时间f......
  • vue中配置使用axios
    简单示例代码:请求网络的js逻辑,可以放到request.js文件中,放在目录utils下;importaxiosfrom"axios";axios.defaults.withCredentials=true;//创建axios实例constinstance=axios.create({//`headers`请求头的通用配置headers:{//'X-Requested-W......
  • java基于springboot+vue的宿舍管理系统、学生宿舍管理系统、高校宿舍管理系统,附源码+
    1、项目介绍java基于springboot+vue的宿舍管理系统、学生宿舍管理系统、高校宿舍管理系统,实现管理员:首页、个人中心、公告信息管理、院系管理、班级管理、学生管理、宿舍信息管理、宿舍安排管理、卫生检查管理、报修信息管理、报修处理管理、缴费信息管理,学生;首页、个人中心、公......
  • vue 选择图片或者拍照上传,数据在外层取不到/拿不到解决。
    <inputtype="file"accept="image/*"capture="camera"@change="onImageChange"class="inputClass"/>//调用asynconImageChange(e){this.capImg=awaitthis.onImageChange(e)console......
  • vue-esign 学习笔记
    1注意事项最新版是1.1.4,我们项目组用的是1.1.0。从npmjs可以看出,两个版本中间的版本都是不可用的,下载量为0.除此之外还可以参考的类似工具:https://www.npmjs.com/package/vue-esignaturevue-esignaturehttps://www.npmjs.com/package/vue3-esignvue3-esign2链接地址http......
  • Vue3 h函数渲染组件
    1、渲染ElSelect组件constmodulleFilters=ref([{label:1,value:2},{label:2,value:3},]);constsearch=ref('');consttableColumn=[{prop:'module',label:'模块',headerRender:()=>h(......
  • vue el-input中点击符号,文本框中显示符号
    需求点击+|()符号,页面中光标位置,展示对应的符号点击完,光标留在原位 代码<el-form-itemprop="kwspec"label='监测关键词'><el-inputtype="textarea"placeholder="请输入监测关键词"ref="inputRef"@blur="inputBlur"v-model=&q......
  • Vue.js 教程:如何使用 Mock.js 进行前端开发
    Mock.js 是常用的生成随机数据,拦截Ajax请求的JavaScript库。在软件开发的初期,后端API接口可能还没有实现或者还没有完全实现。在这种情况下,用Mock.js可以模拟后端API供前端开发人员调用,从而避免等待后端API的完成。要在Vue项目中使用Mock.js有两个思路:在客户端拦......
  • vue中scoped 在文件引入中的作用
    首先搞清楚scoped是干啥的?scoped的引入主要是上线了样式的模块化私有化,即当前组件的样式只对当前组件起作用。当vue组件被vue-loader解析的时候,对于style上加了scope属性的组件,会主动加上data-v-xx的属性来唯一标识当前组件,若当钱组件内部存在子组件,只有子组件的最外层会加上唯一......