IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue学习:网络请求的封装axios -> 正文阅读

[JavaScript知识库]vue学习:网络请求的封装axios

一、为什么选择axios

?

?

?

二、axios的基本使用

// 1.axios基本使用
axios({
  url: "http://123.207.32.32:8000/home/multidata",
  method: 'get' //默认是get请求
}).then(res=>{
  console.log(res);
})
// axios.post()
axios({
  // url: "http://123.207.32.32:8000/home/data?type=sell&page=1",
  url: "http://123.207.32.32:8000/home/data",
  params: {
    type: "sell",
    page: 1
  },
  method: 'get' //默认是get请求
}).then(res=>{
  console.log(res);
})

三、axios发送并发请求

// 2.axios 并发请求。
console.log("axios并发请求")
axios.all([axios({
  url: "http://123.207.32.32:8000/home/multidata",
  method: 'get' //默认是get请求
}),axios({
  url: "http://123.207.32.32:8000/home/data",
  params: {
    type: "sell",
    page: 1
  },
})])
  .then(results=>{
    console.log(results);
  })
  // .then(axios.spread((res1,res2)=>{
  //   console.log(res1);
  //   console.log(res2);
  // }))

?四、配置

  // 3.使用全局axios和对应的配置进行网络请求
  console.log("全局配置")
  axios.defaults.baseURL = "http://123.207.32.32:8000"
  axios.defaults.timeout = 5000
  axios.all([axios({
    url: "/home/multidata",
    method: 'get' //默认是get请求
  }),axios({
    url: "/home/data",
    params: {
      type: "sell",
      page: 1
    },
  })])
    .then(results=>{
      console.log(results);
    })

?五、创建对应的实例

在开发项目时,为了不给服务器压力,可能home、category等不在一个服务器上,此时,就不能使用全局配置了。因此,可以给每个服务器创建对应的实例。

// 4.创建对应的axios实例
console.log("创建对应的实例")
const instancel1 = axios.create({
  baseURL: "http://123.207.32.32:8000",
  timeout: 5000
})
instancel1({
  url: "/home/multidata",
  method: 'get' //默认是get请求
}).then(res=>{
  console.log(res);
})

instancel1({
  url: "/home/data",
    params: {
      type: "sell",
      page: 1
    },
}).then(res=>{
  console.log(res);
})

六、进行封装

由于在项目开发时,框架更新换代很快,如果某个框架不再更新,通常需要换一个新的框架。如果该框架在每个页面都引用了,那么对于后续的修改是很不友好的。因此,通常使用框架时,会对其进行封装。封装后再调用。

axios使用时,并不是在每个页面中都单独引入axios框架,单独发起网络请求,而是对其进行封装。在src中,创建network文件夹,创建request.js

import axios from "axios";
export function request(config){
    const instance1 = axios.create({
        baseURL: "http://123.207.32.32:8000",
        timeout: 5000
    })

    instance1(config)
        .then(res=>{
            console.log(res);
        })
        .catch(err => {
            console.log(err);
        })
    // 在调用网络请求以后,需要把 数据发送出去:四种方式:
    // 1.request函数传递的时候,传递一个config,再传入一个sucess和failer函数。
    instance1(config)
        .then(res=>{
            sucess(res);
        })
        .catch(err => {
            failer(err);
        })

    
    // 2.传递一个config,该config中包括baseConfig和sucess和failer函数
    instance1(config.baseConfig)
    .then(res=>{
        config.sucess(res);
    })
    .catch(err => {
        config.failer(err);
    })
    // 3.使用promise函数。
    return new Promise((resolve, reject) => {
        instance1(config)
        .then(res=>{
            resolve(res);
        })
        .catch(err => {
           reject(err);
        })
    })
    // 4. 由于instance1()本身就返回一个promise函数。因此直接return即可。
    return instance1(config)
    // 使用方式3和4,调用如下:
    request(config)
        .then(res=>{
            // 处理代码
        })
        .catch(err => {
            // 处理代码
        })
}

七、axios拦截器

    // 1拦截器
    // axios.interceptors  全局;拦截器
    //对于axios实例的拦截
    // 1.1 请求拦截
    instance1.interceptors.request.use(config => {   
        console.log(config);
        // (1):比如config中的一些信息不符合服务器的要求,因此可以增加一些配置,或者删除一些配置。
        // (2):比如每次发送网络请求时,希望在界面中显示一个请求的图标。
        // (3)某些网络请求(比如登录,必须要携带token),必须携带一些错误信息。
        return config   //比如返回,否则会执行调用时的catch方法
    }, err => {
        console.log(err)
    })

    // 1.2 响应拦截
    instance1.interceptors.response.use(res => {
        console.log(res);
        return res.data  //拦截后,必须把数据返回出去,否则会输出undefined
    }, err => {
        return err
    })

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:09:15  更:2022-05-05 11:13:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:54:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码