当前位置:   article > 正文

axios 二次封装

axios 二次封装

1、安装

npm i axios

2、封装方法

  • 方法一
  1. import axios from 'axios'
  2. import {
  3. Message
  4. } from 'element-ui'
  5. var Qs = require('qs'); // 处理 post 请求参数
  6. const http = {}
  7. // 创建axios
  8. const instance = axios.create({
  9. timeout: 5000,
  10. headers: {
  11. 'Content-Type': 'application/x-www-form-urlencoded'
  12. },
  13. withCredentials: true, // 表示跨域请求时是否需要使用凭证(携带 cookie)
  14. })
  15. // 请求拦截
  16. instance.interceptors.request.use(config => {
  17. return config
  18. }, err => {
  19. return Promise.reject(err)
  20. })
  21. // 响应拦截
  22. instance.interceptors.response.use(res => {
  23. if (res.status === 200) {
  24. switch (res.data.code) {
  25. case 10001:
  26. Message.warning({
  27. message: res.data.msg
  28. })
  29. break;
  30. ...
  31. }
  32. return res.data;
  33. }
  34. }, err => {
  35. return Promise.reject(err.response)
  36. })
  37. // get请求
  38. http.get = function (url, data = {}) {
  39. return new Promise((resolve, reject) => {
  40. instance.get(url, {
  41. params: data
  42. }).then(res => {
  43. resolve(res)
  44. }).catch(err => {
  45. reject(err);
  46. })
  47. })
  48. }
  49. // delete请求
  50. http.del = function (url, data = {}) {
  51. return new Promise((resolve, reject) => {
  52. instance.delete(url, {
  53. params: data
  54. }).then(res => {
  55. resolve(res)
  56. }).catch(err => {
  57. reject(err);
  58. })
  59. })
  60. }
  61. // post请求
  62. http.post = function (url, data) {
  63. return new Promise((resolve, reject) => {
  64. instance.post(url, Qs.stringify(data)).then(res => {
  65. resolve(res)
  66. }).catch(err => {
  67. reject(err);
  68. })
  69. })
  70. }
  71. export default http
  • 方法二
  1. function request(options) {
  2. options.method = options.method || "get";
  3. if (options.method.toLowerCase() == "get") {
  4. options.params = options.data;
  5. }
  6. return instance(options);
  7. }
  8. export default request;

3、封装函数

  • 方法一
  1. import axios from "@/utils/axios";
  2. const url = {
  3. 'Register': '/register', // 注册
  4. 'SendMailCode': '/send/mail/code', // 发送邮箱验证码
  5. }
  6. // 注册
  7. export const register = data => axios.post(url.Register, data)
  8. // 获取验证码
  9. export const sendMailCode = email => axios.post(url.SendMailCode, {
  10. email
  11. })
  • 方法二
  1. export default {
  2. getData(params) {
  3. return request({
  4. method: "get",
  5. url: "/data",
  6. data: params
  7. });
  8. },
  9. };

4、使用

  1. import { register, sendMailCode } from '@/api/login';
  2. methods: {
  3. register() {
  4. let that = this;
  5. that.loading = true;
  6. register(that.registerForm)
  7. .then((res) => {
  8. if (res.data.code == 1000) {
  9. that.goLogin();
  10. }
  11. that.loading = false;
  12. })
  13. .catch((err) => {
  14. that.loading = false;
  15. });
  16. },
  17. }

5、axios 参考文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/257166
推荐阅读
相关标签
  

闽ICP备14008679号