vue axios 使用心得

1.npm --save 和 --save-dev 有什么区别

发布到线上的叫生产环境~,在本地开发的时候叫开发环境,--save就是会打包到线上去并且在线上环境能用到的,比如你npm install 一个vue-router,这个在线上环境也是能用到的依赖,所以你要--save~ 比如vue-loader这个组件只需要在开发的时候编译就好,线上并不需用的到,所以就放在开发的--save-dev里就好~~~~

2.安装vue axios

axios 官方文档http://www.axios-js.com/

npm安装

npm install --save axios vue-axios

main.js 引入

import axios from 'axios'
import VueAxios from 'vue-axios' 
Vue.use(VueAxios, axios)
​
### import  引用, Vue.use  注册到vue 实例上

vue.use 与Vue.prototype. $xx 区别

vue 组件的三种使用方式教程

Vue经典面试题: Vue.use和Vue.prototype.$xx有血缘关系吗?

index.vue 页面 中使用

## 方法一
this.axios.get(api).then((response) => {
  console.log(response)
})
## 方法二
this.$http.get(api).then((response) => {
  console.log(response)
})
​
### 在.vue文件中使用 this 代表当前vue , (response)=>{}采用的是es6写法 解决函数内this指向问题
​

3.vue部署apache 刷新页面 404

添加伪静态 ->新建文件.htaccess文件

 

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

 

4. axios 并发请求

 

 this.axios.all([this.axios.get('/api/index/index'),this.axios({
      url:"/api/Address/index",
        params:{
          user_id:1
        }
      })]).then(res=>{
        console.log(res);
      })
##  /api  更改为自己的地址
##  这里是两种get请求写法,第二个写法默认是get请求,  get请求传参数必须使用params:{}  
##  缺点 结果为下图    拿数据的话 只能 res[0],res[1]

this.axios.all([this.axios.get('/api/index/index'),this.axios({
      url:"/api/Address/index",
        params:{
          user_id:1
        }
      })]).then(this.axios.spread((res1,res2)=>{
              console.log(res1);
              console.log(res2);
      }))
## 使用 axios.spread
## 现在 数据是展开的状态 ,如下图

 

5.axios 全局配置

请求超时 在main.js 中设置

axios.defaults.timeout =  1000;
​
## 通过关键字 defaults 来设置
​
为什么要创建axios的实例呢?
当我们从axios模块中导入对象时, 使用的实例是默认的实例.
当给该实例设置一些默认配置时, 这些配置就被固定下来了.
但是后续开发中, 某些配置可能会不太一样.
比如某些请求需要使用特定的baseURL或者timeout或者content-Type等.
这个时候, 我们就可以创建新的实例, 并且传入属于该实例的配置信息.
​

常用配置项

​
​

请求地址
​
url: '/user',
​
请求类型
​
method: 'get',
​
请根路径
​
baseURL: 'http://www.mt.com/api',
​
请求前的数据处理
​
transformRequest:[function(data){}],
​
请求后的数据处理
​
transformResponse: [function(data){}],
​
自定义的请求头
​
headers:{'x-Requested-With':'XMLHttpRequest'},
​
URL查询对象
​
params:{ id: 12 },
    
查询对象序列化函数
paramsSerializer: function(params){ }
​
request body
data: { key: 'aa'},
    
超时设置s
timeout: 1000,
    
跨域是否带Token
withCredentials: false,
    
自定义请求处理
adapter: function(resolve, reject, config){},
    
身份验证信息
auth: { uname: '', pwd: '12'},
    
响应的数据格式 json / blob /document /arraybuffer / text / stream
​
responseType: 'json',
​

 

在一个项目里 创建不同的axios 实例

var instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

axios 中文文档

6.axios封装

单独封装一个文件 request.js

import axios from 'axios'
​
export function request(config) {
  // 1.创建axios的实例
  const instance = axios.create({
    baseURL: '/api',
    timeout: 5000
  })
  return instance(config)
}
 ## 这里把封装好的 实例return出去,

.vue 文件

// 导入
import { request } from "@/network/request";
 request({
        url: "/Address/index",
        params: {
          user_id: 1
        }
      }) .then(res => {
          console.log(res);
        })
        .catch(err => {
          console.log(err);
        });
### 封装好的实例本就就有。then  catch 属性, 所有这里直接拿就行
​
### 迷惑 。。这里request 函数的 第一个参数 url +  params  当 config 传给封装好的实例了,但是没有看到封装好的实例 用这个参数 ,于是我找到 axios 的源码看了一下,看下图。
​

 

编辑器 查看axios源码

 

7.axios 拦截

请求成功 /失败 拦截

响应成功 /失败 拦截

共四个拦截器

一.每次请求拦截

// 2.axios的拦截器
  // 2.1.请求拦截的作用
  instance.interceptors.request.use(config => {
    console.log(config);
    // 1.比如config中的一些信息不符合服务器的要求
​
    // 2.比如每次发送网络请求时, 都希望在界面中显示一个请求的图标
​
    // 3.某些网络请求(比如登录(token)), 必须携带一些特殊的信息
    return config
    ## 必须return 吧结果返回过去
  }, err => {
    // console.log(err);
  })

二 响应拦截

​
  // 2.2.响应拦截
  instance.interceptors.response.use(res => {
    // console.log(res);
    return res.data
      ###  配置每次响应成功 只返回data
  }, err => {
    console.log(err);
  })

 

instance  是 文章一开始 封装的 axios 实例

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue使用axios可以通过将axios引入到main.js文件中,并将其设置为Vue实例的原型属性来进行。以下是使用axios的步骤: 1. 首先,在main.js文件中导入axios模块。使用import语句将axios引入到main.js文件中: ```javascript import axios from 'axios' ``` 2. 然后,将axios添加到Vue的原型属性中,这样它就可以在整个应用程序中的任何组件中访问。在main.js文件中添加以下代码: ```javascript Vue.prototype.$axios = axios ``` 3. 现在,你可以在Vue组件中使用axios来发送HTTP请求。例如,你可以使用以下语法来发送GET请求: ```javascript this.$axios.get(url, params) .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }) ``` 4. 类似地,你可以使用以下语法来发送其他类型的请求,比如POST、PUT和DELETE: ```javascript this.$axios.post(url, data) this.$axios.put(url, data) this.$axios.delete(url, params) ``` 5. 如果你需要设置请求头信息,你可以在请求中传递一个配置对象,其中包含headers属性。例如,你可以使用以下方式来设置请求头: ```javascript this.$axios.post(url, param, { headers: { 'Authorization': 'Bearer ' + localStorage.getItem('token'), 'token': '...' } }) ``` 综上所述,以上是在Vue使用axios的基本步骤和语法说明。通过将axios导入到main.js文件并设置为Vue实例的原型属性,你可以在整个应用程序中使用axios进行HTTP请求,并且可以根据需要设置请求头信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue-axios使用](https://blog.csdn.net/m0_57391092/article/details/126405908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值