能否创建可执行多API调用的对象?用类封装实现全局复用
封装多API调用的类实现方案
完全可以通过封装类来统一管理这些API调用,避免重复代码,同时让调用更简洁。以下是具体实现方案:
1. 封装API服务类
创建一个类,抽离重复逻辑(比如请求头生成),再将两个API调用封装为类方法:
// 假设API是你已配置好的axios实例或其他HTTP客户端 class CropApiService { constructor(apiInstance) { this.API = apiInstance; } // 私有方法:生成统一请求头 #getHeaders(token) { return { "Content-Type": "application/json", "authorization": token || localStorage.getItem("token") }; } // 获取基础作物信息(对应/crop接口) getCropBasic(cropDetails, token) { return this.API.get(`/crop?name=${cropDetails}`, { headers: this.#getHeaders(token) }); } // 获取作物详细信息(对应/crop/details接口) getCropFullDetails(cropDetails, token) { return this.API.get(`/crop/details?name=${cropDetails}`, { headers: this.#getHeaders(token) }); } }
2. 实例化与使用
在项目中实例化这个类(可导出单例,避免重复创建实例):
// 假设你的API实例从某个模块导入 import { API } from './api-config'; // 创建单例服务 export const cropApiService = new CropApiService(API); // 在任意组件/模块中调用 // 获取基础信息 cropApiService.getCropBasic("小麦") .then(res => console.log(res.data)) .catch(err => console.error(err)); // 获取详细信息(可传入自定义token) cropApiService.getCropFullDetails("小麦", "自定义token") .then(res => console.log(res.data)) .catch(err => console.error(err));
方案优势
- 代码复用:请求头、API实例等逻辑只写一次,修改时只需改动类内部
- 统一管理:所有作物相关API集中在一个类里,便于维护和查找
- 灵活扩展:后续新增作物相关API,直接在类中添加方法即可
- 参数可选:token参数可选,优先使用传入的token,未传入时自动读取localStorage
内容的提问来源于stack exchange,提问作者Akash Suklabaidya
相关产品推荐
相关产品推荐

