common.js 1.66 KB
/*
 * @Date: 2022-06-17 14:54:29
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2023-06-25 09:33:28
 * @FilePath: /huizhu/src/api/common.js
 * @Description: 通用接口
 */
import { fn, fetch, uploadFn } from '@/api/fn';

const Api = {
  SMS: '/srv/?a=sms',
  TOKEN: '/srv/?a=upload',
  SAVE_FILE: '/srv/?a=upload&t=save_file',
}

/**
 * 发送短信验证码
 * @param {{ phone: string }} params 请求参数
 * @returns {Promise<Object|false>} 统一返回(成功为后端对象,失败为 false)
 */
export const smsAPI = (params) => fn(fetch.post(Api.SMS, params));

/**
 * 获取七牛上传 token
 * @param {{ filename: string, file?: string }} params 请求参数(file 可选,用于部分后端校验)
 * @returns {Promise<Object|false>} 统一返回(成功为后端对象,失败为 false)
 */
export const qiniuTokenAPI = (params) => fn(fetch.stringifyPost(Api.TOKEN, params));

/**
 * 上传到七牛(第三方接口,返回结构与业务接口不同)
 * @param {string} url 七牛上传地址
 * @param {any} data 上传 body(通常是 FormData)
 * @param {Object} config axios 配置
 * @returns {Promise<Object|false>} 成功返回七牛数据,失败返回 false
 */
export const qiniuUploadAPI = (url, data, config) => uploadFn(fetch.basePost(url, data, config));

/**
 * 保存七牛文件(通知后端落库/生成访问地址等)
 * @param {{ format: string, hash: string, height?: number, width?: number, filekey: string }} params 请求参数
 * @returns {Promise<Object|false>} 统一返回(成功为后端对象,失败为 false)
 */
export const saveFileAPI = (params) => fn(fetch.stringifyPost(Api.SAVE_FILE, params));