主要文件包含小程序环境封装,接口文件,request请求封装

环境配置api分类放置
接口封装
env.js文件配置

'use strict'
/**小程序当前环境develop开发版、trial体验版、release正式版 */
const envVersion = wx.getAccountInfoSync().miniProgram.envVersion;
/**环境配置 */
module.exports = require(`./env.${envVersion === 'release' ? 'prod' : 'dev'}.js`)
// module.exports = require(`./env.${envVersion === 'release' ? 'dev' : 'prod'}.js`)

env.dev.js放置开发配置文件;env.prod.js放置正式环境文件,可用module.exports对外暴露主要前缀接口。

request.js接口封装文件

/**
 * 封装 http 方法
 * @param {
 *  -  url, 请求地址(必填)
 *  -  data, data 数据
 *  -  headers, 请求头
 *  -  timeout, 请求超时时间(默认 一分钟)
 *  -  method, 请求类型(默认 'GET')
 *  -  encryption, 是否开启数据加密,
 *  -  shark, 接口防抖(防止用户短时间内疯狂调用接口)
 * };
 * @returns Promise<any>;
 */
export const request = async ({
    url,
    data,
    header,
    timeout,
    method,
    shark,
    encryption,
}) => {
    let spendTime = null,sharkTime = 300;shark = shark||false
    return new Promise(resolve => {
        const obj = {
            url: url,
            header: getHeader(),
            timeout: 1000 * 60,
            method: 'GET',
            success: (res) => {
                console.log(res);
                let code = res.data.code;
                //顶号操作,解除手机号绑定
                if (code == 1005 && isStart) {
                    console.log("我顶号了")
                    wxlogin()
                    isStart = false
                    return;
                }
                resolve(res.data);
            },
            fail: (err) => {
                reject({
                    error: err,
                    code: 0
                })
            }
        };
        console.log(data)
        //个人框架所需部分 可跳过 start
        //getUserInfo()改方法封装登录用户的数据,需要时刻直接引用
        if (getUserInfo()) {
            if (data == undefined || data.isUseUser == undefined) {
                data = {
                    ...data,
                    userId: getUserInfo().id,
                }
            } else {
                delete data['isUseUser'];
            }
        }
        clean(data);
        // // if (encryption) {
        // data = en.Encryption(data);
        // // }
         //个人框架所需部分 可跳过 end
        if (data) {
            obj.data = {
                ...data,
            }
        }
        if (header) obj.header = {
            ...obj.header,
            ...header
        };
        if (timeout) obj.timeout = timeout;
        if (method) obj.method = method;
        //防抖操作
        if (shark) {
            spendTime&&clearTimeout(spendTime)
            spendTime = setTimeout(()=>{
                wx.request(obj)
            },sharkTime)
        }else {
            wx.request(obj)
        }

    })

    }
/**获取消息头 */
export const getHeader = () => {
    var header = {
        "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
    };
    let loginToken = wx.getStorageSync('userLoginToken');
    if (loginToken != undefined && loginToken.length > 0) {
        header = {
            "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
            "token": loginToken
        }
    }
    return header;
}
/**
 * 删除空白属性
 * @param {Object} obj  
 */
export const clean = function (obj) {
    for (var propName in obj) {
        if (obj[propName] === null || obj[propName] === undefined) {
            delete obj[propName];
        }
    }
}

api文件示例

/*! *****************************************************************************
 简历API接口类 ResumeApi.js
***************************************************************************** */
import {
 request,
} from '../utils/request.js'
import { host } from '../config/env';

/**
 * 添加或修改简历
 * @param null
 * @async
 */
export const addOrUpdateResume = async params => await request({ url: `${host}/app/resume/addOrUpdateResumeOne.todo`, data: params, shark:true, method: 'post' });

接口调用部分

let app = getApp();
import {
  addOrUpdateResume,
} from '../../../api/ResumeApi.js'
  /**
   * 提交
   * async..await 控制同异步 不需要则不加
   */
  async onSaveInfo () {
    wx.showLoading({
      title: '保存中...'
    })
    let that = this, data = that.data.userInfo;
    let UserOpenId = wx.getStorageSync('UserOpenId')
    if(UserOpenId){
        data.openid = UserOpenId 
     }
    await addOrUpdateResume(data).then(res=>{
        wx.hideLoading();
        if(res.code == 200){
          that.showMsg("保存成功!", true)
          setTimeout(() => {
            wx.navigateBack({
              delta: 1,
            })
          }, 1500);
        }
        if(res.code == 300){
          wx.showToast({
            title: res.msg,
            icon:'none'
          })
        }
    
      })
    }
  },
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐