【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本

简介: 【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本
import $g from "./sg";
//常用路径________________________________________________________________________________
const API_ROOT_URL = "https://www.shuzhiqiang.com/api"; //生产的IP
//一些前提条件和方法________________________________________________________________________________
//跳转到登录页面
const jumpLoginPage = () => {
    uni.clearStorageSync(); //清空对象键、值
  if (!location.href.includes('/pages/login/index')) {
    uni.redirectTo({
      url: `/pages/login/index?url=${encodeURIComponent(location.href)}`
    });
  }
}
// 请求报错提示
const errAlert = (url, d) => sgAlert(`【可能是后端报错】\n\r【接口地址】${url}\n\r【返回报文】${JSON.stringify(d, null, 4)}`);
// 普通报错提示
const sgAlert = (d) => {
  uni.showToast({
    icon: 'none',
    title: d
  });
}
//主体请求________________________________________________________________________________
export default {
  jumpLoginPage,
  API_ROOT_URL,
  imgPrePath: API_ROOT_URL + '/',
  //API FUNCTION ________________________________________________________________________________
  __sd(type, url, data, doing, otherConfig = {}) {
    type || (type = 'POST');
    //noAutoToken=true代表该接口无需保持登录状态就可以获取信息,譬如一些公共对外开放的接口
    let token = uni.getStorageSync('token'); //获取token
    if (!otherConfig.noAutoToken) {     
      if (!token) return jumpLoginPage();//判断如果本地没有token,否者直接跳转到登录页面
    }
    let headers = {
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    };
    if (!otherConfig.noAutoToken) {
      token && (headers["kkToken"] || (headers["kkToken"] = token));
      data || (data = {});
    }
    // 防止下载导出文件乱码
    let xhrFields = otherConfig.isDownload ? {responseType: "arraybuffer"} : null;
    // ________________________________________________________________________________
    doing.s && (doing.success = doing.s); //精简别名
    doing.f && (doing.fail = doing.f); //精简别名
    doing.e && (doing.error = doing.e); //精简别名
    doing.l && (doing.loading = doing.l, doing.loading.show && doing.loading.show()); //精简别名[加载]
    uni.request({
      ...xhrFields,
      method: type,
      url,
      data,
      header: headers,
      success: d => {
        d = d.data;
                // typeof d === 'string' && (d = JSON.parse(d));//如果是字符串返回值,则转换为JSON格式
        doing.loading && doing.loading.close && doing.loading.close(); //关闭加载
        if (otherConfig.isDownload) return doing.success(d); //如果是下载,直接返回文档流
        switch (d.success) {
          case true: //登录成功 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ 
            doing.success && doing.success(otherConfig.isGetAllData ? d : (d.data || d));
            break;
          case false: //登录失败(当token密码失效的时候) ☠ ☠ ☠ ☠
            doing.fail ? doing.fail(d) : sgAlert(d.msg);
            break;
        }
        switch (d.code) {
          case 403: //登录失败(当token密码失效的时候) ☠ ☠ ☠ ☠
          case 404: //登录失败(当token密码失效的时候) ☠ ☠ ☠ ☠
            jumpLoginPage();
            doing.fail ? doing.fail(d) : sgAlert(d.msg);
            break;
          case -2: //扫码失败 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ 
          case -1: //请求失败 ✖ ✖ ✖ ✖
            doing.fail ? doing.fail(d) : sgAlert(d.msg);
            break;
        }
      },
      error: d => { //请求报错 ✖ ✖ ✖ ✖
        if (d.status == 403) {
          jumpLoginPage();
          return doing.error ? doing.error(d) : sgAlert(JSON.parse(d.responseText).msg);
        }
        doing.loading && doing.loading.close && doing.loading.close(); //关闭加载
        doing.error ? doing.error(d) : errAlert(url, d);
        console.log("【报错】" + JSON.stringify(d, null, 4),d);
      },
    });
  },
  //【通用接口demo】________________________________________________________________________________
    API_NAME({ data, doing, config }) { this.__sd("post", `${API_ROOT_URL}/XXX/bill/print${$g.formatAsUrlParamString(data)}`, data, doing, config); },
    //提交用例________________________________________
    get({doing}) {
        this.__sd("get", `${API_ROOT_URL}/get.do`, null, doing) { isGetAllData: true };
    },
    post({data, doing}) {
        this.__sd("post", `${API_ROOT_URL}/post.do`, data, doing);
    },
    login({data, doing}) {
        this.__sd("post", `${API_ROOT_URL}/post.do`, data, doing, { noAutoToken: true });
    },
    download({data, doing}) {
        this.__sd("post", `${API_ROOT_URL}/post.do`, data, doing, { isDownload: true });
    },
}
相关文章
|
10月前
|
搜索推荐 API UED
淘宝/天猫获得淘宝app商品详情原数据 API 返回值的应用
该API专注于商品信息整合与展示,提供基础信息抓取、多媒体内容整合等功能,助力实时同步商品数据,构建丰富的详情页。同时支持数据分析与市场洞察,包括销售趋势分析和竞品对比,优化库存与定价策略。此外,动态促销管理和个性化推荐系统可提升营销效果,而实时库存预警和评价数据可视化则显著增强用户体验,为用户决策提供透明依据,全面提升平台竞争力与用户满意度。
|
12月前
|
安全 API Swift
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
915 15
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
|
11月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
12月前
|
JSON JavaScript 数据格式
jqtimeline.js-简单又好用的jquery时间轴插件
jqtimeline.js-简单又好用的jquery时间轴插件
|
11月前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
供应链 数据挖掘 API
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
1066 8
|
供应链 数据挖掘 API
1688app 商品详情接口系列(1688API)
1688作为国内知名批发采购平台,提供了一系列商品详情接口(API),助力企业和开发者获取商品基础、价格、库存及供应商信息。通过Python示例代码展示如何调用这些接口,应用场景涵盖采购决策辅助、数据分析与市场调研、电商平台整合及供应链管理系统的优化,为企业和采购商提供有力的数据支持,提升业务效率和竞争力。
473 15
|
JSON 数据挖掘 API
京东app商品详情API接口系列(京东 API)
本文介绍了使用 Python 调用京东商品详情 API 的方法。前期需安装 `requests` 库处理 HTTP 请求,导入 `json` 库解析 JSON 数据。接口通过商品 ID 获取详细信息,如价格、图片、评价等。示例代码展示了如何构建请求并处理响应数据。应用场景包括电商开发、市场调研和数据分析等,帮助提升用户体验、优化推荐系统及制定市场策略。
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
475 5
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
697 6