vue 封装 axios
时间: 2023-11-19 16:05:52 浏览: 128
以下是Vue封装Axios的示例代码:
```javascript
// 引入axios
import axios from 'axios'
// 创建axios实例
const instance = axios.create({
baseURL: 'https://api.example.com', // 设置请求的base url
timeout: 5000 // 设置请求超时时间
})
// 封装get请求
export function get(url, params) {
return instance.get(url, {params})
}
// 封装post请求
export function post(url, data) {
return instance.post(url, data)
}
```
在上面的代码中,我们首先引入了axios,并创建了一个axios实例。然后,我们封装了get和post请求,这两个方法分别对应了axios实例的get和post方法。在这里,我们可以设置请求的base url和超时时间,也可以设置请求头等其他参数。
相关问题
vue封装axios
在 Vue 中封装 axios 通常是指封装 axios 的请求方法并在组件中使用。你可以将 axios 封装到一个单独的模块中,并在需要的组件中导入使用。
首先,安装 axios:
```
npm install axios
```
然后,创建一个 axios.js 文件,在文件中封装 axios 的请求方法:
```
import axios from 'axios'
export default function (url, data = {}, type = 'GET') {
return new Promise(function (resolve, reject) {
let promise
if (type === 'GET') {
// 准备 url query 参数数据
let dataStr = '' // 数据拼接字符串
Object.keys(data).forEach(key => {
dataStr += key + '=' + data[key] + '&'
})
if (dataStr !== '') {
dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
url = url + '?' + dataStr
}
// 发送 get 请求
promise = axios.get(url)
} else {
// 发送 post 请求
promise = axios.post(url, data)
}
promise.then(function (response) {
// 成功了调用resolve()
resolve(response.data)
}).catch(function (error) {
//失败了调用reject()
reject(error)
})
})
}
```
在需要使用的组件中导入并使用这个方法:
```
import axios from './axios'
export default {
methods: {
getData () {
axios('/api/data').then(res => {
console.log(res)
})
}
}
}
```
你还可以在封装的方法中统一处理错误,例如响应状态码为 401 时跳转到登录页面。
希望这能帮到你!
vue 封装axios
如何封装vue中的axios?
在封装axios时,我们可以按照以下步骤进行:
1. 安装axios
在vue项目中使用axios需要先安装它,可以通过npm或者yarn安装。
npm安装:
```npm install axios --save```
yarn安装:
```yarn add axios```
2. 创建封装函数
我们可以创建一个独立的js文件,来封装axios的请求功能,例如:
```javascript
import axios from 'axios'
const service = axios.create({
baseURL: 'http://localhost:8080/api',
timeout: 5000 // request timeout
})
// request interceptor
service.interceptors.request.use(
config => {
// do something before request is sent
return config
},
error => {
// do something with request error
console.log(error) // for debug
return Promise.reject(error)
}
)
// response interceptor
service.interceptors.response.use(
/**
* If you want to get http information such as headers or status
* Please return response => response
*/
/**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/
response => {
const res = response.data
// if the custom code is not 20000, it is judged as an error.
if (res.code !== 20000) {
console.log(res.message || 'Error')
} else {
return res
}
},
error => {
console.log('err' + error) // for debug
return Promise.reject(error)
}
)
export default service
```
在以上代码中,我们创建了一个service对象,并使用create方法来创建一个axios实例,设置了请求的基础URL和timeout。然后我们可以在拦截器中进行一些请求和响应的处理。
3. 使用封装函数
在vue组件中使用时,我们需要导入封装函数,并调用它即可,例如:
```javascript
import request from '@/utils/request'
export function getList(params) {
return request({
url: '/list',
method: 'get',
params
})
}
```
以上代码中,我们导入了封装好的request函数,并在getList函数中使用它来发送请求,具体的请求配置可以在getList函数中传入,例如url、method等。
阅读全文