uniapp-微信小程序封装request

一.项目下新建utils文件夹

1.建config.js文件

const config = {
	base_url: '这里可以是生产环境或者测试环境'	
}
export { config }

2.建http.js文件 (md5加密-选用)

import {
	config
} from './config.js'
// var md5 = require('md5-node');
export const apiResquest = (prams) => { //prams 为我们需要调用的接口API的参数 下面会贴具体代码
	// 判断请求类型
	let headerData = {
		'content-type': 'application/json'
	}
	let newTime = new Date().getTime()
	function getRandomString (){
		const chars = 'ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz0123456789';
		const maxPos = chars.length;
		let str = '';
		for (let i = 0; i < 6; i++) {
			str += chars.charAt(Math.floor(Math.random() * maxPos));
		}
		return str;
	}
	let randomString = getRandomString()
	function getSignStr (nonce, time){
		const str = ['nonce', nonce, 'secret', config.private, 'time', time].map(item => encodeURI(item)).join('');
		return str
		// return md5(str)
	}
	let signStr = getSignStr(randomString,newTime)
	if(uni.getStorageSync('skey')){
		headerData = {
			'content-type': 'application/json',
			'skey': uni.getStorageSync('skey'),
			'time': newTime,
			'nonce': randomString,
			'sign': signStr,
		}		
	}
	let dataObj = {
		...prams.query
	}
	return new Promise((resolve, reject) => {
		let url = config.base_url + prams.url; //请求的网络地址和局地的api地址组合
		uni.showLoading({
			title: '加载中',
			mask: true 
		})
		return uni.request({
			url: url,
			data: dataObj,
			method: prams.method,
			header: headerData,
			success: (res) => {
				uni.hideLoading()
                //这里是成功的返回码,大家根据自己的实际情况调整
				if (res.data.code !== '200') {
					uni.showToast({
						title: '获取数据失败:' + res.data.msg,
						duration: 1000,
						icon: "none"
					})
					return;
				}
				resolve(res.data);
			},
			fail: (err) => {
				reject(err);
				console.log(err)
				uni.hideLoading()
			},
			complete: () => {
				console.log('请求完成')
				uni.hideLoading()
			}
		});
	})
}

二.项目下新建api文件夹

1.建立xx.js

import { apiResquest } from '../utils/http.js'

//GEt 请求案例
export const getUserLoginInfo = (query) => {
	return apiResquest({
		url: '/login',
		method: 'GET',
		query: {...query}
	})
}

//POST 请求案例
export const testApi = (query) => {
	return apiResquest({
		url: '/api/test',
		method: 'POST',
		query: {...query}
	})
}

三.页面中调用

	// script内引入
	import { getUserLoginInfo,testApi } from '../../api/login.js'
	getUserLoginInfo({
		code: '参数code'
	})
	.then((res)=>{
		console.log('.then成功');
		uni.setStorageSync('skey',res.data.skey)
	})
	.catch(()=>{
					
	})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值