vue3封装请求功能

2023-11-13

1 一般3开发后缀为ts的是在安装脚手架选择了ts语法开发
2 一般3开发后缀还为js的是没有选择ts当然也支持后缀vue文件使用setup

js后缀的支持2的封装如下链接:

vue2封装请求

如下所示为ts后缀的说明:

在这里插入图片描述

request.js 这个文件是封装请求axios 据
index.js  这个文件是封装单独独立的接口数

request.js

import axios from 'axios';
//创建axios,赋给变量service
const service = axios.create({
    baseURL: 'https://cnodejs.org/api/v1',
    timeout: 10000,//超时
    headers: { 'Content-Type': 'application/json'}
});
const showStatus = (status:any) => {
    let message = ''
    switch (status) {
        case 400:
            message = '请求错误(400)'
            break
        case 401:
            message = '未授权,请重新登录(401)'
            break
        case 402:
            message = '拒绝访问(402)'
            break
        case 404:
            message = '请求出错(404)'
            break
        case 408:
            message = '请求超时(408)'
            break
        case 500:
            message = '服务器错误(500)'
            break
        case 501:
            message = '服务未实现(501)'
            break
        case 502:
            message = '网络错误(502)'
            break
        case 503:
            message = '服务不可用(503)'
            break
        case 504:
            message = '网络超时(504)'
            break
        case 505:
            message = 'HTTP版本不受支持(505)'
            break
        default:
            message = `连接出错(${status})!`
    }
    return `${message},请检查网络或联系管理员!`
}
// 请求拦截器
service.interceptors.request.use(
    config => {
        return config
    },
    (err) => {
        err.message = '服务器异常,请联系管理员!'
        // 错误抛到业务代码
        return Promise.reject(err)
    }
)
// 响应拦截器
service.interceptors.response.use(
    response => {
        const status = response.status
        let msg = ''
        if (status < 200 || status >= 300 && status != 401 && status != 500) {
          // 处理http错误,抛到业务代码
            msg = showStatus(status)
            if (typeof response.data === 'string') {
                response.data = { msg }
            } else {
                response.data.msg = msg
            }
            return response
        } else if (status == 200) {
            return response
        } else if (status == 500) {
            msg = showStatus(status)
            response.data = { msg: msg }
            return response
        }

    },
    (err) => {
        err.message = '请求超时或服务器异常,请检查网络或联系管理员!'
        return Promise.reject(err)
    }
)
// 将service 导出
export default  service;

index.js

import request from '../utils/request'
// 首页
export function topics(params: any) {
  return request({
    url: '/topics',
    method: 'get',
    params
  })
}
// 详情
export function particulars(params: string) {
    return request({
      url: `/topics/${params}`,
      method: 'get',
      params
    })
  }
// 新建主题
export function construction(data: any) {
    return request({
      url: "/topics",
      method: 'post',
      data
    })
  }
// 编辑主题
export function redact(data: any) {
    return request({
      url: "/topics/update",
      method: 'post',
      data
    })
  }

// 主题收藏
// 取消主题
// 收藏主题
// 评论
// 点赞
// 用户详情
// 验证 accessToken 
// 获取未读消息数
// 获取已读和未读消息
//  标记全部已读
// 

在页面使用获取

在onMounted里面进行写入
<template>
  <div class="main"></div>
</template>
<script lang='ts'>
import { reactive, toRefs, onBeforeMount, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router"; //引入路由
import  * as api from "../../api/user";//引入对应的api
export default {
  name: "",
  setup() {
    let router = useRouter(),
    route = useRoute();
    const data = reactive({});
    onMounted(() => {
      api.topics({ page:"1",limit:"10" }).then((res) => {
        console.log(res);
      });
    });
    const refData = toRefs(data);
    return {
      ...refData,
    };
  },
};
</script>
<style scoped>
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3封装请求功能 的相关文章

  • 保姆级教学——集群环境搭建及创建集群

    保姆级教学 集群环境搭建及创建集群 新建虚拟机 一些默认 加载镜像开启虚拟机 在安装位置选择自己目录 然后建立分区 首先添加 挂载点 类型标准分区 文件系统ext4 加载分区 期望给2G 类型标准分区 swap默认 然后剩下47G给 就可以
  • 发布本地Docker镜像到阿里云的Docker Hub

    发布本地Docker镜像到阿里云的Docker Hub 在使用Docker时 有时需要制作自己的Docker镜像 这些镜像可以保存到不同的Docker Hub中 包括Docker官方的和国内的一些Hub 比如阿里云 同时 也可以使用阿里云的
  • 排列组合相关公式讲解(Anm,Cnm等)

    两个性质 1 C n m C n n m 2 C n m C n 1 m C n 1 m 1 编程时可用此递推
  • Python最强学习知识点:面相对象基础语法

    面相对象基础语法 目标 dir 内置函数 定义简单的类 只包含方法 方法中的 self 参数 初始化方法 内置方法和属性 01 dir 内置函数 知道 在 Python 中 对象几乎是无所不在的 我们之前学习的 变量 数据 函数 都是对象

随机推荐

  • 单周期RISC-V架构CPU的设计---设计篇

    目录 一 模块设计 1 pc reg v 1 1 功能说明 1 2 整体框图 1 3 接口列表 1 4 内部信号说明 1 5 关键电路 2 id v 2 1 功能说明 2 2 整体框图 2 3 接口列表 2 4 内部信号说明 2 5 关键电
  • Vim语法检查插件cppSyntaxCheck

    下载cppSyntaxCheck master https github com sjp 1024 Classroom notes blob master cppSyntaxCheck master zip 将解压文件中的cppSyntax
  • 40+野路子学习软件编程记录

    1 软件几乎零基础 机械专业 手机行业项目管理工作 2 疫情期间 闲来无事 突发兴趣 3 有点开窍入门 4 树莓派Linux学习入手 openwrt homeassiant airplay和媒体局域网服务等 5 学习Python读ds18b
  • postgresql导出表结构

    pg dump命令可以导出数据库中的表结构 s 选项用来只导出表结构 而不会导出表中的数据 t 选项用来指定要导出的数据库表 pg dump s t tlb exampledb gt tmp tlb exampledb是数据库 tlb是ex
  • MySQL对大小写敏感吗

    见字如面 见标题知内容 你有遇到过因为MYSQL对大小写敏感而被坑的体验吗 之前看过阿里巴巴Java开发手册 在MySql建表规约里有看到 强制 表名 字段名必须使用小写字母或数字 禁止出现数字开头 禁止两个下划线中间只 出现数字 数据库字
  • Python代码:根据txt文件批量提取图片

    个人微信公众号 AI研习图书馆 欢迎关注 深度学习知识及资源分享 学习交流 共同进步 1 介绍 Python代码 根据txt文件批量提取图片并保存至另一文件夹 用于深度学习 图片数据预处理 2 Python代码 实现方案一 import s
  • vue点击按钮跳转新页面

    const str location href split 0 window open str router的name
  • java自动登录 selenium 自动登录并获取cookie

    选择操作网页 我用的edge 谷歌我的版本太高没有对应的驱动 下载Edge的驱动程序 直接解压就好里面只有一个 exe文件 https developer microsoft com en us microsoft edge tools w
  • bluez调试笔记

    蓝牙系列 bluez调试笔记 weixin 41069709的博客 CSDN博客 bluezbluez移植https blog csdn net weixin 41069709 article details 125168114 spm 1
  • 指针与const限定符

    const限定符和指针结合起来常见的情况有以下几种 const int a int const a 这两种写法是一样的 a是一个指向const int的指针 a所指向的内存单元不可改写 所以 a 是不允许的 但a可以改写 所以a 是允许的
  • 低电压电池充不进电问题分析

    作者 AirCity 2020 3 1 Aircity007 sina com 本文所有权归作者Aircity所有 1 问题现象 某MSM8998手机项目 老化测试一端时间后 有很小比例的机器关机黑屏 充电1h没有反应 测量电池电压 2 6
  • Java实验二 货物进销管理系统【简单易懂】

    写在前面 这个题目主要通过仔细阅读题目的需求 再通过对文件流以及Vector ArrayList等容器的控制来完成整个代码体系的构建 因为当时正在学习 对代码的构建逻辑不够规范 思想不够到位的地方也难以避免 在这里抱歉抱歉 不过这一版的构建
  • 在K2P路由器,非官方openwrt固件,安装软件遇到的坑!

    手上有一台斐讯K2P A2版本的路由器 一直空闲在宿舍 最近发现这个路由器被破解了 可以刷上不死breed 还有很多大神做的固件 因此我想用它刷上openwrt系统后 安装某软件 从而直接在路由器上完成学校的宽带验证登陆 接下来我就介绍我在
  • 04 Cesium—Cesium ion介绍

    文章中所有操作均是在 Cesium 1 91 版本下进行的 其它版本差异请自行适配 Cesium ion Cesium ion 是一个提供瓦片图和3D地理空间数据的平台 Cesium ion 支持把数据添加到用户自己的 CesiumJS 应
  • 8421BCD码 5421BCD码 余三码 格雷码 余三循环码之间的关系,转换以及简易方法

    8421BCD码 5421BCD码 余三码 格雷码 余三循环码之间的关系 转换以及简易方法 1 有权码和无权码的包括 2 各种码值的介绍 8421码的简介 8421码又称为BCD码 是十进代码中最常用的一种 在这种编码方式中 每一位二值代码
  • java设计模式之单例模式

    目录 一 单例模式 二 饿汉模式和懒汉模式 1 饿汉模式 线程安全 2 懒汉模式
  • KVM无法进入virt-manager,提示Unable to init server: Could not connect: Connection refused

    1 KVM virt manager不能以root用户进入 需切换成普通用户或者sudo用户 2 需要配置ssh 密钥 3 需要安装Xming或者Xmanager等KVM可用等图形界面软件 无法连接kvm 设置用户到组 一定要当前用户不要r
  • 应用安全系列之九:HTTP参数污染

    本系列文章主旨在于介绍一些漏洞类型产生的基本原理 探索最基础的解决问题的措施 不排除有些语言或者系统提供的安全的API可以更好地更直接地解决问题 也不排除可以严格地输入验证来解决 URL参数注入 也称为HPP HTTP Parameter
  • java自旋锁的实现及其分析

    自旋锁是指一个线程尝试获取某个锁时 如果该锁已经被其他线程占用了 就一直循环检测锁释放被释放 而不是像互斥锁一样让线程进入挂起或者睡眠状态 自旋锁的的缺点就是会一直死循环一直到获取锁为止 这样会一直消耗cpu内存 但是与互斥锁把线程阻塞 然
  • vue3封装请求功能

    1 一般3开发后缀为ts的是在安装脚手架选择了ts语法开发 2 一般3开发后缀还为js的是没有选择ts当然也支持后缀vue文件使用setup js后缀的支持2的封装如下链接 vue2封装请求 如下所示为ts后缀的说明 request js