用Class封装Web API的核心是抽离重复逻辑,通过BaseHTTP类统一处理请求、错误、鉴权和配置,再按模块继承生成业务API类,实现配置集中化、调用简洁化与维护解耦化。
直接用 Class 封装 Web API,核心是把重复的请求逻辑、错误处理、身份校验、基础配置抽离成可复用的对象,让业务层只关心“要什么”,而不是“怎么发”。
明确 Base URL 和全局配置
每个项目都有统一的接口前缀(比如 https://api.example.com/v1),把它单独拎出来,避免硬编码散落在各处。
config.js 或 constants.ts 里定义: export const API_CONFIG = { baseURL: 'https://api.example.com/v1', timeout: 10000, headers: { 'Content-Type': 'application/json' }};
封装一个基础 HTTP 类
这个类负责发起真实请求,处理通用流程:拦截器、loading 状态、统一错误码解析、自动重试(可选)。
get、post、put 等通用方法; baseURL,并带上默认 header; code !== 0 都触发统一错误处理。按模块拆分业务 API 类
继承基础 HTTP 类,每个模块(如 user、order、product)对应一个子类,只写本模块专属接口:
/user),后续方法自动补全; Promise<UserInfo>); class UserAPI extends BaseHTTP {constructor() { super('/user');}async login(data: LoginParams) { return this.post('/login', data);}async profile() { return this.get('/profile');}}
在页面或服务中直接使用实例
不需要每次都 new,推荐单例或依赖注入方式管理实例:
const userAPI = new UserAPI(); userAPI.login({ phone, pwd }),返回值直接 await; 这样一层一层剥离后,接口变更只需改基础类或某个模块类,业务代码几乎不动。