typescript和java很多类似的地方,javaScript 只会在 运行时 才去做数据类型检查,而 TypeScript 作为静态类型语言,其数据类型是在 编译期间 确定的,编写代码的时候要明确变量的数据类型。使用 TypeScript 后,这些低级错误将不再发生。规范后用起来很舒服,能轻易知道自己错在哪。下面就是axios的二次封装。
为了代码规范化
首先在路径下utils/http 文件下需要三个ts分步文件 core.ts (核心类的封装) index.ts(到处类的封装) types.ts(所用到的类型封装)
首先核心类的封装(core.ts)
import axios from 'axios'
import {
AxiosInstance, AxiosRequestConfig, AxiosResponse, Method } from 'axios'
import {
IResponseData, codeMessage } from './types';
import {
successMessage,errorMessage} from '../messageTips'
class Http {
private service: AxiosInstance
// 构造器
constructor(config: AxiosRequestConfig) {
// 创造实例
this.service = axios.create(config)
// 首先配置响应拦截
this.service.interceptors.request.use((config: AxiosRequestConfig) => {
/**
* 实现自己的业务逻辑
* 1.开启全屏加载动画之类
* 2.数据加密config。data
* 3.给请求头添加信息等(token 结合sessionStorage,localStorage,vuex这些)
*
*/
return config
}, error => {
/* 请求错误的业务逻辑
1. 关闭全屏loading动画
2. 重定向到错误页
*/
return Promise.reject(error)// 为了可以在代码中catch到错误信息
})//end request.use
this.service.interceptors.response.use((response: AxiosResponse) => {
/*
1. 关闭全屏loading动画
2. 数据解密
3. 根据 response.data.code 做不同的错误处理
4. ……
*/
const data = response.data
const {
code } = data//解构赋值