关于axios(vue)

1、基础用法

下载axios:

npm install axios --save
或者使用淘宝镜像下载:
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install axios --save

在main.js中:

// 导入axios
import axios from 'axios'
// 配置请求的根路径
axios.defaults.baseURL = 'https://www.liulongbin.top:8888/api/private/v1' 
//设置网络请求超时
axios.defaults.timeout = 10000;
Vue.prototype.$http = axios

然后在页面中就可以使用:

//这种写法为es6新写法(解构赋值):将右边的data赋值给左边的data,然后重新命名为res
let  { data : res}  =  this.$http.post('访问路径',{参数})   
console.log(res)
let  { data : res}  =  this.$http.get('访问路径')   
let  { data : res}  =  this.$http.put('访问路径',{参数})   
let  { data : res}  =  this.$http.delete('访问路径',{参数})   

2、axios拦截器

在main.js中:

// axios请求拦截器(请求之前干点什么)
axios.interceptors.request.use(
  config => {
    if (window.sessionStorage.getItem('token')){
     //在头信息中添加{ Authorization :token  }
      config.headers.Authorization = window.sessionStorage.getItem('token') 
    }
    return config
  },
  error => {
    console.log('Error' + error);
  }
)


//axios响应拦截器(对响应数据做点什么)
axios.interceptors.response.use(
	response => {
	
	},
	error => {
	
	}
)

3、简单封装

在src下新建一个utils文件夹,然后在这个文件夹下新建两个文件request.js和api.js

在request.js中封装axios:

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

// 配置请求的根路径
axios.defaults.baseURL = 'https://www.liulongbin.top:8888/api/private/v1'
// 请求超时
axios.defaults.timeout = '10000'
// post请求的头信息
axios.defaults.headers.post['content-Type'] = 'application-x-www-form-urlencode'

// 请求拦截器
axios.interceptors.request.use(
    config => {
        if (window.sessionStorage.getItem('token')){
            config.headers.Authorization = window.sessionStorage.getItem('token')
        }
        return config
    },
    error => {
        return Promise.reject(error)
    }
)
// 响应拦截器
axios.interceptors.response.use(
    response => {
        if (response.status === 200){
            return Promise.resolve(response)
        } else {
            return Promise.reject(response)
        }
    },
    error => {
        return Promise.reject(error)
    }
)
export default axios 

在api,js中统一管理api:

import request from './request'
export  function login(param){
    return request({
        url:'login',
        method:'post',
        params:param
    })
}
export function user(param){
    return request({
        url:`users`,
        method:'get',
        data:param
    })
}


在页面中使用:

<script>
import { login } from '@/common/utils/api.js' 
export default {
  data() {
    return {
      loginForm: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    // 登录
    login(formName) {
      // 表单预验证
      this.$refs[formName].validate(async (valid) => {
        if (!valid) return false
		//调用api
        login(this.loginForm).then((res)=>{
          console.log(res);
        })
      })
    },
}
</script>

最后 ,附上一篇大神讲的封装axios的:点击此处查看

Axios是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js。Vue中使用Axios可以方便地进行HTTP请求。在Vue中使用Axios进行跨域请求,可以通过以下两种方式解决: 1. 在Vue中进行配置 可以在Vue的配置文件中设置Axios的默认配置,包括跨域请求的相关配置。具体步骤如下: ① 安装Axios ```shell npm install axios --save ``` ② 在main.js中引入Axios并进行配置 ```javascript import axios from 'axios' // 设置Axios的默认配置 axios.defaults.baseURL = 'http://localhost:8080' // 设置请求的基础URL axios.defaults.timeout = 5000 // 设置请求超时时间 // 设置Axios的跨域请求相关配置 axios.defaults.withCredentials = true // 允许携带cookie axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded' // 设置POST请求的请求头 // 将Axios挂载到Vue的原型上,方便在组件中使用 Vue.prototype.$axios = axios ``` ③ 在组件中使用Axios进行跨域请求 ```javascript this.$axios.get('/api/user', { params: { id: 1 } }).then(res => { console.log(res.data) }).catch(err => { console.log(err) }) ``` 2. 使用Nginx转发 可以使用Nginx作为反向代理服务器,将Vue的请求转发到后端服务器上,从而实现跨域请求。具体步骤如下: ① 安装Nginx ```shell sudo apt-get install nginx ``` ② 配置Nginx 在Nginx的配置文件中添加以下内容: ```nginx server { listen 80; server_name localhost; location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 其中,`/api`是Vue的请求路径,`http://localhost:8080`是后端服务器的地址。 ③ 在组件中使用Axios进行跨域请求 ```javascript this.$axios.get('/api/user', { params: { id: 1 } }).then(res => { console.log(res.data) }).catch(err => { console.log(err) }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值