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知识库 -> axios 的使用 -> 正文阅读

[JavaScript知识库]axios 的使用

Vue——发送http请求详解
1)vue本身不支持发送AJAX请求,需要使用vue-resource、axios等插件实现。
引入后在这里插入图片描述

2) axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护。

使用axios发送AJAX请求

1、安装axios并引入

npm的方式: $ npm install axios -S 或 cnpm install axios -S

或者 cdn的方式:

2、如何引入使用axios
在main.js或者单独组件中引用

import axios from 'axios';

3、封装axios进行调用

//1. axios的基本使用
axios({
  url:'http://123.207.32.32:8000/home/multidata'
}).then(res=>{
  console.log(res);
})

axios({
  url:'http://123.207.32.32:8000/home/data',
  //专门针对get请求的参数拼接
  params:{
    type:'pop',
    page:1
  }
}).then(res=>{
  console.log(res);
})

// 2.axios发送并发请求   两个请求都完成再做处理

axios.all([axios({
  url:'http://123.207.32.32:8000/home/multidata'
}),axios({
  url:'http://123.207.32.32:8000/home/data',
  //注意一下,get对应params参数拼接,post对应data 请求体
  params:{
    type:'sell',
    page:4
  }
}
)]).then(axios.spread((res1,res2)=>{
  //返回一个数组,用spread延展
console.log(res1);
console.log(res2);
}
))

4.全局配置

axios.defaults.baseURL='http://123.207.32.32:8000'
axios.defaults.timeout=5000

5.axios 的实例

//创建对于的axios 的实例  不止一个服务器请求
const instance1= axios.create({
  baseURL:'http://123.207.32.32:8000',
  timeout:5000
})

instance1({
  url:'/home/multidata'
}).then(res=>{
  console.log(res);
})

const instance2= axios.create({
  baseURL:'http://192.168.31.54:8000',
  timeout:5000
})

6.封装request模块

/****   request.js   ****/

import axios from 'axios'
import ElementUI from 'element-ui'

const request = axios.create({
    baseURL: 'http://localhost:9090',  // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!!
    timeout: 5000
})

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
request.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8';
// let user = localStorage.getItem("user")?JSON.parse(localStorage.getItem("user")):{};
// if(user){
//     config.headers['token'] = user.token;  // 设置请求头
// }

    return config
}, error => {
    return Promise.reject(error)
});

// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
    response => {
        let res = response.data;
        // 如果是返回的文件
        if (response.config.responseType === 'blob') {
            return res
        }
        // 兼容服务端返回的字符串数据
        if (typeof res === 'string') {
            res = res ? JSON.parse(res) : res
        }
        //权限验证不足,给出提示
        if (res.code==='401'){
ElementUI.Message({
    message:res.msg,
    type:'error'
})
        }
        return res;
    },
    error => {
        console.log('err' + error) // for debug
        return Promise.reject(error)
    }
)

export default request

使用
1.创建axios.js
在这里插入图片描述
2.main.js 引入axios.js
在这里插入图片描述
引入的 是 导出的名字
注:因为request不是vue特有的插件,所以不能直接使用vue.use注册,上面的prototype的axios部分是用户自定义的
3.在组件中使用
在这里插入图片描述

解决Vue跨域问题:

在这里插入图片描述

解决方法:在脚手架中的config下的index.js中

在 dev 的 proxyTable 对象中添加这些属性

// Paths

    assetsSubDirectory: 'static',

    assetsPublicPath: '/',

    proxyTable: {

      "/api":{

        target:"https://xin.yuemei.com/V603/channel/getScreenNew/",//接口域名

        changeOrigin:true,//是否跨域

        pathRewrite:{

          "^/api":""//重写为空,这个时候api就相当于上面target接口基准地址

        }

      }

    },

然后请求这里用axios请求
请求的时候前缀api就相当于基准地址了

axios.post("/api").then(res => {

      console.log(res);

      this.data = res.data.data;

 });

 //如果有参数请求

 axios.post("/api?key=111").then(res => {

      console.log(res);

      this.data = res.data.data;

 });

重新跑一遍

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:05:12  更:2022-09-13 11:08:27 
 
开发: 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 9:44:37-

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