TypeScript 项目中接口的统一管理

简介: TypeScript 项目中接口的统一管理

首先我们简单来二次封装一个 axios 请求:

utils / request / index.ts

import axios from 'axios'

let request = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API,
    timeout: 5000
})

request.interceptors.request.use((config) => {
    // config配置对象中的一个重要属性 headers 请求头, 通常用来给服务其携带公共参数
    return config
})

request.interceptors.response.use((response) => {
    return response.data // 简化请求回来的数据
}, (error) => {
    // 失败回调:处理 http 网络错误
    let message = ''
    let status = error.response.status
    switch (status) {
        case 401:
            message="身份验证过期,请重新登录"
            break
        case 403:
            message="你无权访问"
            break
        case 404:
            message="资源没有找到"
            break
        case 500:
            message="服务器出现故障"
    }

    return Promise.reject(error) // 终结 Promise 链
})

export default request

在 src 目录下新建一个 api 文件夹


这里就以 user 模块为例:

index.ts:管理 user 模块相关的接口

那么 type.ts 是做什么用的呢?

接口在发起请求的时候可能是会携带参数的,以及服务器返回的数据等等这些都是需要被定义数据的类型的,因此该配置文件的作用就体现出来了。

type.ts


// req-登录接口
// 携带参数的数据类型
export interface loginForm {
    username: string,
    password: string
}
// 返回的数据的数据类型
interface dataType {
    token: string
}
export interface loginResponseData {
    code: number,
    data: dataType
}

// req-用户信息获取接口
// 返回的数据的数据类型
interface userInfo {
    userId: number,
    avatar: string,
    username: string,
    password: string,
    desc: string,
    roles: string[],
    buttons: string[],
    routes: string[],
    token: string
}
interface user {
    checkUser: userInfo
}
export interface userResponseData {
    code: number,
    data: user
}


接口定义

import request from '@/utils/request/index.ts'
import type { loginForm, loginResponseData, userResponseData } from "@/api/user/type.ts";

// 枚举请求接口地址
enum API {
    LOGIN_URL= '/user/login',
    USERINFO_URL = '/user/info'
}

export const reqLogin = (data: loginForm) =>  request.post<any, loginResponseData>(API.LOGIN_URL, data) // req-登录接口

export const reqUserInfo = () => request.get<any,userResponseData>(API.USERINFO_URL) // req-获取用户信息接口
目录
相关文章
|
8天前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
23 1
|
3月前
|
JavaScript 前端开发 开发工具
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
TypeScript的介绍,let age:number = xxx,可以直接看出数据类型,Type由微软开发,可以在任何浏览器和系统中运行,比较适合大型项目,TypeScript的安装
|
10天前
|
数据采集 JavaScript 前端开发
使用 TypeScript 接口优化数据结构
使用 TypeScript 接口优化数据结构
|
2月前
|
JavaScript 前端开发 测试技术
TypeScript逆袭!大型项目为何对它情有独钟?揭秘背后的真相!
【8月更文挑战第27天】随着前端领域的快速发展,JavaScript已成为Web开发的核心语言。然而,在处理大型项目时,其弱类型特性导致的维护困难和易错性等问题日益突出。为解决这些问题,TypeScript应运而生,逐渐成为大型项目的首选方案。
30 3
|
2月前
|
开发框架 前端开发 JavaScript
在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
|
3月前
|
JavaScript 开发者 索引
TypeScript接口与类型别名:深入解析与应用实践
【7月更文挑战第10天】TypeScript的接口和类型别名是定义类型的关键工具。接口描述对象结构,用于类、对象和函数参数的形状约束,支持可选、只读属性及继承。类型别名则为复杂类型提供新名称,便于重用和简化。接口适合面向对象场景,类型别名在类型重用和复杂类型简化时更有优势。选择时要考虑场景和灵活性。
|
2月前
|
JavaScript 前端开发 安全
TypeScript在项目中应用
【8月更文挑战第4天】TypeScript在项目中应用
24 0
|
3月前
|
JavaScript 前端开发 IDE
React 项目中有效地使用 TypeScript
React 项目中有效地使用 TypeScript
|
2月前
|
JavaScript 前端开发 API
Vue 3+TypeScript项目实战:解锁vue-next-admin中的全局挂载对象接口,让跨组件共享变得高效而优雅!
【8月更文挑战第3天】在构建Vue 3与TypeScript及vue-next-admin框架的应用时,为提高多组件间共享数据或方法的效率和可维护性,全局挂载对象接口成为关键。本文通过问答形式介绍其必要性和实现方法:首先定义全局接口及其实现,如日期格式化工具;接着在`main.ts`中通过`app.config.globalProperties`将其挂载;最后在组件内通过Composition API的`getCurrentInstance`访问。这种方式简化了跨组件通信,增强了代码复用性和维护性。
31 0
|
4月前
|
监控 JavaScript 前端开发
如何在现有的 JavaScript 项目中渐进式地采用 TypeScript
【6月更文挑战第13天】TypeScript,JavaScript的超集,引入静态类型和更多特性,提升代码安全性和可读性。在JavaScript项目中渐进式采用TypeScript可从新模块开始,逐步转换代码,编写.d.ts文件支持第三方库,配置编译选项,并编写测试用例。通过监控和评估,改善项目质量和效率。大型项目尤其受益于TypeScript的类型安全、社区支持和工具兼容性。
53 3
下一篇
无影云桌面