uniApp数据请求封装

目的:减少非业务层代码编写,让编辑者更多地专注于业务代码的编写

/**********************************************httpClient.js**********************************************************************************/

import {
    baseUrl
} from '../config';
/**

注:baseUrl微服务器api地址,数据服务后台跨域
 * 获取存储token
 */
const getToken = () => {
    try {
        const value = uni.getStorageSync('token');
        return value ? value : '';
    } catch (e) {
        return '';
    }
}
/**
 * 返回数据格式处理
 * @param err 错误信息 
 * @param res 返回请求参数   
 */

注:服务器外层实体为{code,message,t},可自行修改为你自己的外层实体(后端返回数据外层VO)
const farmData = (res, success, fail) => {
    if (!res) {
        uni.showToast({
            title: message,
            icon: 'none'
        })
        fail && fail(false, 404)
        return;
    }
    const {
        data: {
            code,
            message,
            t
        }
    } = res;
    if (code === 200) {
        success && success(t || true);
        return;
    }
    uni.showToast({
        title: message,
        icon: 'none'
    })
    fail && fail(false, code);
}
/**
 * 发送请求
 * @param {Sting}  method 请求方法
 * @param {Sting}  serveRouter 后端服务路由
 * @param {Object}  requestData 服务请求参数
 * @param {Function}  success 成功数据回调
 * @param {Function}  fail 失败数据回调
 */
const sendRequest = (method, serveRouter, requestData, success, fail) => {
    uni.request({
        header: {
            'Content-Type': 'application/json;charset=utf-8',
            Authorization: getToken()
        },
        method,
        data: requestData,
        url: `${baseUrl}${serveRouter}`,
        success: res => (farmData(res, success, fail)),
        fail: res => (farmData(null, success, fail))
    })
}
/**
 * httpPost数据请求
 * @param {Sting}  serveRouter 后端服务路由
 * @param {Object}  requestData 服务请求参数
 * @param {Function}  success 成功数据回调
 * @param {Function}  fail 失败数据回调
 */
export const httpPost = (serveRouter, requestData, success, fail) => (
    sendRequest('POST', serveRouter, requestData, success, fail))
/**
 * httpGet数据请求
 * @param {Sting}  serveRouter 后端服务路由
 * @param {Object}  requestData 服务请求参数
 * @param {Function}  success 成功数据回调
 * @param {Function}  fail 失败数据回调
 */
export const httpGet = (serveRouter, requestData, success, fail) => (
    sendRequest('GET', serveRouter, requestData, success, fail));
/**
 * httpPut数据请求
 * @param {Sting}  serveRouter 后端服务路由
 * @param {Object}  requestData 服务请求参数
 * @param {Function}  success 成功数据回调
 * @param {Function}  fail 失败数据回调
 */
export const httpPut = (serveRouter, requestData, success, fail) => (
    sendRequest('PUT', serveRouter, requestData, success, fail))
/**
 * httpDelete数据请求
 * @param {Sting}  serveRouter 后端服务路由
 * @param {Object}  requestData 服务请求参数
 * @param {Function}  success 成功数据回调
 * @param {Function}  fail 失败数据回调
 */
export const httpDelete = (serveRouter, requestData, success, fail) => (
    sendRequest('delete', serveRouter, requestData, success, fail))
/**
 * httpUpFile数据请求
 * @param {Sting}  serveRouter 后端服务路由
 * @param {Sting}  filePath 文件地址
 * @param {Object}  requestData 服务请求参数
 * @param {Function}  success 成功数据回调
 * @param {Function}  fail 失败数据回调
 */
export const httpUpFile = (serveRouter, filePath, requestData, success, fail) => {
    uni.uploadFile({
        url: serveRouter,
        filePath: filePath,
        name: 'file',
        formData: requestData,
        success: res => (farmData(res, success, fail)),
        fail: res => (farmData(null, success, fail))
    });
}

/********************************************main.js**************************************************************/

// 导入httpCliet工具

import {httpPost,httpGet, httpPut, httpDelete,httpPatch,httpUpFile} from './utl/httpClient'

// 追加至vue原型

Vue.prototype.httpPost = httpPost;
Vue.prototype.httpGet = httpGet;
Vue.prototype.httpPut = httpPut;
Vue.prototype.httpDelete = httpDelete;
Vue.prototype.httpPatch = httpPatch;
Vue.prototype.httpUpFile = httpUpFile;

/***************************************组件名.vue**********************************************************/

// httpPost调用

this.httpPost('login/loginWithPassword', {
     phoneOrEmail: '18286181751',
     password: 'zzr1234'

}, async ({token}) => {
 const isSaveTrue = await this.localSave.save('token', token);

// httpGet调用
  isSaveTrue&&this.httpGet('user',{id:'ad',name:'ad'},console.log)
 });

 

如果觉得对你有帮助请点个赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值