当前位置: 首页 > article >正文

请求函数的封装---工具函数

导出一个通用的请求工具函数,支持设置响应数据类型
支持不同接口设不同的响应数据的类型

import axios, { AxiosError, type Method } from 'axios'

// 4. 请求工具函数
const request = (url: string, method: Method = 'GET', submitData?: object) => {
  return instance.request({
    url,
    method,
    [method.toUpperCase() === 'GET' ? 'params' : 'data']: submitData
  })
}

加上泛型

//后台返回的数据结构几乎相同,所以可以抽取相同的类型
type Data<T> = {
  code: number
  message: string
  data: T
}
// 4. 请求工具函数  toUpperCase()统一为大写,默认为GET
const request = <T>(url: string, method: Method = 'get', submitData?: object) => {
  return instance.request<T, Data<T>>({
    url,
    method,
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
  })
}

测试:封装好的请求工具函数

<script setup lang="ts">
import { request } from '@/utils/request'
import type { User } from './types/user'
import { Button as VanButton } from 'vant'
import { useUserStore } from './stores'

// 测试,请求拦截器,是否携带token,响应拦截器401拦截到登录地址
const getUserInfo = async () => {
  const res = await request('/patient/myUser')
  console.log(res)
}

// 测试,响应拦截器,出现非10000的情况,和返回剥离后的数据
const store = useUserStore()
const login = async () => {
//地址('/login/password') 请求方式 ('POST')提交的数据({mobile: '13211112222', password: 'abc12345' })
  const res = await request<User>('/login/password', 'POST', {
    mobile: '13211112222',
    // 密码 abc123456 测试:出现非10000的情况
    password: 'abc12345'
  })
  store.setUser(res.data)
}
</script>

<template>
  <van-button type="primary" @click="getUserInfo">获取个人信息</van-button>
  <van-button type="primary" @click="login">登录</van-button>
</template>

在这里插入图片描述


http://www.kler.cn/a/159092.html

相关文章:

  • 后台管理系统(开箱即用)
  • docker-hub 无法访问,使用windows魔法拉取docker images再上传到linux docker环境中
  • 37.超级简易的计算器 C语言
  • STM32设计防丢防摔智能行李箱
  • 【第三课】Rust变量与数据类型(二)
  • Excel使用-弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接”的发生与处理
  • Java中快速失败 (fail-fast) 机制
  • 装修流程篇
  • C++ 预处理详解
  • Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206]
  • IBNR详解及基于R的计算逻辑
  • Python 元组详解(tuple)
  • python字符串格式化--数字精度控制和快速写法
  • 安装npm,配置国内源
  • WebDriver运行原理的深入剖析
  • scipy
  • 基于高德API实现网络geoJSON功能(整体)
  • Qlik 成为网络犯罪的焦点
  • 图像识别经典轻量级网络模型总结梳理、原理解析与优劣对比分析
  • 机器学习中Fine-tuning应用实例
  • AVFormatContext封装层:理论与实战
  • 今日心得:多总结多探索,多于他人沟通,思想观点碰撞
  • Lambda表达式与方法引用
  • java8 常用code
  • Gitee项目推荐-HasChat
  • 28、卷积 - 卷积的基础公式