Vue + axios + vant 封装公共请求

2023-11-09

import axios from 'axios'            //引入axios
import router from '../router'        //引入路由
import { Toast } from 'vant' //引入提示层

export function post(obj) {              //调用时参数为一个对象
    return new Promise((resolve, reject) => { //穿件Promise实例
        axios({                          //单例js 不允要this
            method: "POST",              //请求方式
            url: obj.url,                //请求地址
            data: obj.data               //请求参数
        }).then(res => {                 //请求成功操作
            if (obj.IS !== false) {      //是否需要弹框提示
                successState(res)        //调用弹框封装
            }

            resolve(res)                 //新Promise对象实例(成功)
        }).catch(err => {                //请求失败操作
            let status = err.response.status;  //错误状态码
            switch (status) {
                case 400:                 //状态码400

                    Toast.fail('数据格式错误,请重新填写!');

                    break;
                case 401:
                    Toast.fail('登录过期,已为您跳转到登录页!');

                    localStorage.removeItem("token")
                    router.push({ path: "/" });
                    break;
                case 500:
                    Toast.fail('服务器异常,请稍后再试!');

                    break;
                default:
                    Toast.fail('未知错误');//不在上述范围内的错误处理

            }
            reject(err)                    //新Promise对象实例(失败)
        })
    })
}
//拦截器
axios.interceptors.request.use(function (config) { // 每次请求时会从localStorage中获取token
    let token = localStorage.getItem("Authorization")

    if (token) {
        config.headers.common['Authorization'] = token

    }
    return config
}, function (error) {
    console.log(error)
    return Promise.reject(error);
})

//定义弹出层
function successState(res) {

    if (res.status == 200) {
        if (res.data.code == "200") {  //请求成功状态码

            Toast.success(res.data.msg);
            return
        } else if (res.data.code == "-1") { //请求失败状态码
            Toast.fail(res.data.data.msg,);

            return
        }
    }

}

使用 

 import { post } from '../util/http' //导入post函数
 
post({ //函数内部调用函数 传参为对象形式
              url: this.globalAPI.getProductList,          //请求地址
              data: postData,                     //请求数据
              IS: false                              //是否需要弹框提示
          }).then(res => {                         //这里可以继续then->res
              this.productList =  res.data.data;        //处理业务逻辑........
          });

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue + axios + vant 封装公共请求 的相关文章

  • 在 Java 中使用 JSON 的 HTTP POST

    我想在 Java 中使用 JSON 制作一个简单的 HTTP POST 假设网址是www site com 它接受值 name myname age 20 标记为 details 例如 我将如何创建 POST 语法 我似乎也无法在 JSON
  • 使用 libsoup 进行 HTTP POST

    我想使用 libsoup 执行一个简单的 POST 请求 我想要发送数据的网站的 api 只需要一个名为 内容 的字段 使用curl我这样做 curl si F content mycontent http mywebsite org ap
  • 循环遍历 POST 数组

    我需要循环遍历 post 数组并提交它 stuff 1
  • 如何根据请求打开多个浏览器窗口? (PHP)

    所以我有一个表格PHP HTML页 用户将其提交给同一PHP HTML页 现在我将拥有 PHP 页面 POST数据 我想在刷新页面时选择一些弹出浏览器窗口 其中 url 将相对于用户POST要求 喜欢www example com bal
  • 如何使用 Java 以编程方式登录 Facebook?

    我正在尝试编写一个可以自动登录 Facebook 的 Java 程序 到目前为止 我已经得到了以下代码 可以将主页 html 页面下载到字符串中 但不知道如何发送电子邮件和密码来登录 Facebook Java 程序还需要处理返回的 coo
  • fgets 和 fread 之间的区别

    我有以下代码 include
  • c# http Post 在 webresponse 中没有得到任何内容

    这是我的请求和响应代码 System IO MemoryStream xmlStream null HttpWebRequest HttpReq HttpWebRequest WebRequest Create url xmlStream
  • 如何取消 boost asio io_service 帖子

    如何取消已发布的回调 getIoService gt post boost bind MyClass myCallback this 并保持其他发布的回调不变 问题是我有一些对象从不同线程接收事件 并将它们发布到 ioservice 以便处
  • 使用 net/http 发送 Post 请求

    我需要将 JSON 数据发送到同一台计算机上运行的另一个应用程序 我像这样发送请求 rails 3 2 13 data some data hash url URI parse http localhost 6379 api plans r
  • IPV6 Curl POST 请求

    在 IPV6 中 如何使用 IPV6 地址和端口号构建 CURL POST http 请求 任何类型的线程都将受到赞赏 尝试构建如下请求 gt curl interface http 2001 0 db8 1111 0 0 0 11 809
  • 如何在 PHP 中检查不完整的 POST 请求

    当连接速度较慢的远程 Web 客户端无法发送完整的 POST 请求时 我遇到了问题multipart form data内容 但 PHP 仍然使用部分接收到的数据来填充 POST大批 结果一个值 POST数组可能不完整 并且可能会丢失更多值
  • PHP:如何获取
    中的名称值

    有没有办法获取form标签中name属性的值 我正在使用 PHP 但在 中没有看到它 POST 有没有办法获取form标签中name属性的值 我正在使用 PHP 但在 POST 中没有看到它 不 表单的名称属性永远不会设置为作为 POST
  • Android:从 https url 获取响应

    问候 我正在开发一个 Android 应用程序 需要通过 https 打开一个 url 带有 POST 参数 并获取响应 我有一个自签名证书 这让情况更加复杂 我还需要接受cookies 有人知道从哪里开始吗 提前谢谢了 Android 附
  • 411 需要内容长度

    我正在尝试使用 Android Apache HttpClient 执行 POST 但它返回错误 411 Content Length required 这是代码 HttpClient httpClient new DefaultHttpC
  • Jquery POST 获取建议列表

    我有下一个代码 它运行良好 问题是当用户写完单词时 脚本不断创建后调用并不断更改建议列表 我想做一些事情 如果用户继续写一个单词 脚本会停止所有的 post 调用 只执行最后一个 inputString keydown function l
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 如何 POST 从 PHP 创建的 HTML 表数据

    while row mysql fetch array res echo tr echo td td tr
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse
  • 在 Python 中将 GET 更改为 POST (Flask)

    我正在尝试创建一个简单的应用程序 其中在服务器上生成整数数组并将其发送到客户端 以下是 app py 中的一些示例 工作 代码 from flask import Flask render template request url for

随机推荐