当前位置:   article > 正文

Vue中Axios的简单封装_vue 封装axio

vue 封装axio

一、Axios封装

在开发过程中,我们常常需要对Axios进行一些自定义的封装,例如添加固定headers、统一处理错误返回等。这样可以使代码更加简洁、易于维护。下面将介绍如何封装Axios。

(1)封装请求配置

我们先来定义一个config.js文件,用于统一管理请求的配置。

  1. import axios from 'axios'
  2. // 创建一个axios的实例
  3. const Axios = axios.create({
  4. baseURL: '',
  5. timeout: 5000,
  6. headers: {
  7. 'Content-Type': 'application/json;charset=UTF-8'
  8. }
  9. })
  10. // 添加请求拦截
  11. Axios.interceptors.request.use(
  12. config => {
  13. // 在发送请求之前做些什么
  14. return config
  15. },
  16. error => {
  17. // 对请求错误做些什么
  18. return Promise.reject(error)
  19. }
  20. )
  21. // 添加响应拦截器
  22. Axios.interceptors.response.use(
  23. response => {
  24. // 对响应数据做些什么
  25. return response
  26. },
  27. error => {
  28. // 对响应错误做些什么
  29. return Promise.reject(error)
  30. }
  31. )
  32. export default Axios

在这个文件中,我们定义了一个Axios实例,并且添加了请求拦截、响应拦截器。这样在发送请求时,就会先经过请求拦截器进行处理,在响应时也会先经过响应拦截器进行处理。

(2)封装请求方法

在config.js文件中已经定义了Axios实例,我们可以根据需要创建不同的请求方法。例如,我们现在需要定义一个get方法。

  1. import Axios from './config'
  2. export function get(url, params = {}) {
  3. return new Promise((resolve, reject) => {
  4. Axios.get(url, {
  5. params: params
  6. })
  7. .then(response => {
  8. resolve(response.data)
  9. })
  10. .catch(error => {
  11. reject(error)
  12. })
  13. })
  14. }

 这里的get方法使用了Axios实例的get方法,并且在请求时传入了url和params,这样就可以发送GET请求。在请求成功时,我们使用Promise将返回的数据resolve出去,在请求失败时,将错误reject出去。

同样的,我们可以根据需要进行不同类型的请求方法的封装。

二、Axios常用方法介绍

在完成了Axios的封装后,下面将介绍Axios常用的一些方法。

(1)GET请求

get(url[, config])

url:请求的url,可以使用相对路径或者绝对路径。

config:请求的配置,包含params、headers等等。

  1. import Axios from './config'
  2. Axios.get('/user?id=1')
  3. .then(response => {})
  4. .catch(error => {})

(2)POST请求

post(url[, data[, config]])

url:请求的url,可以使用相对路径或者绝对路径。

data:请求的数据。

config:请求的配置,包含headers等等。

  1. import Axios from './config'
  2. Axios.post('/user', {
  3. id: 1,
  4. name: 'user'
  5. })
  6. .then(response => {})
  7. .catch(error => {})

(3)PUT请求

put(url[, data[, config]])

url:请求的url,可以使用相对路径或者绝对路径。

data:请求的数据。

config:请求的配置,包含headers等等。

  1. import Axios from './config'
  2. Axios.put('/user', {
  3. id: 1,
  4. name: 'user'
  5. })
  6. .then(response => {})
  7. .catch(error => {})

(4)DELETE请求

delete(url[, config])

url:请求的url,可以使用相对路径或者绝对路径。

config:请求的配置,包含headers等等。

  1. import Axios from './config'
  2. Axios.delete('/user?id=1')
  3. .then(response => {})
  4. .catch(error => {})

(5)请求拦截

在config.js文件中,我们定义了一个请求拦截器。可以使用请求拦截器做一些自定义的数据处理、添加请求头等等。

  1. Axios.interceptors.request.use(
  2. config => {
  3. // 在发送请求之前做些什么
  4. config.headers.Authorization = 'token'
  5. return config
  6. },
  7. error => {
  8. // 对请求错误做些什么
  9. return Promise.reject(error)
  10. }
  11. )

(6)响应拦截

在config.js文件中,我们定义了一个响应拦截器。可以使用响应拦截器做一些自定义的错误处理、数据处理等等。

  1. Axios.interceptors.response.use(
  2. response => {
  3. // 对响应数据做些什么
  4. return response
  5. },
  6. error => {
  7. // 对响应错误做些什么
  8. if (error.response) {
  9. // do something
  10. }
  11. return Promise.reject(error)
  12. }
  13. )
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号