You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否创建可执行多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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:02:52