uniapp request请求公共发放配置

567 阅读1分钟

utils-request.js页面

// switch (process.env.NODE_ENV) {
//   case 'development':
//     // 公共的地址开发
//     baseUrl = 'http://192.168.1.191/abc/'
//     break
//   case 'test':
//     baseUrl = 'https://test.epen.ltd/'
//     break
//   case 'production':
//     baseUrl = 'https://production.epen.ltd/'
//     break
//   default:
//     baseUrl = 'https://default.epen.ltd/'
// }
// console.log('baseUrl', baseUrl)
// 公共地址
import {
	getToken
} from '../utils/auth';
import qs from 'qs'
// request.js
// 通常可以吧 baseUrl 单独放在一个 js 文件了
const baseUrl = 'XXX'

const request = (options = {}) => {
	// 在这里可以对请求头进行一些设置
	// 例如:
	options.header = {
		"Content-Type": "application/json",
		"x-access-token": getToken()
	}
	return new Promise((resolve, reject) => {
		uni.request({
			url: baseUrl + options.url || '',
			method: options.type || 'GET',
			data: options.data || {},
			header: options.header || {}
		}).then(data => {
			let [err, res] = data;
			resolve(res);
		}).catch(error => {
			reject(error)
		})
		uni.addInterceptor('request', {
			invoke(args) {
				// request 触发前拼接 url 
				if (args.method === 'GET' && args.data) {
					args.url =
						`${args.url}?${qs.stringify(args.data, { arrayFormat: 'repeat',skipNulls:true })}`
					delete args.data
				}
			}
		})

	});
}

const get = (url, data, options = {}) => {

	options.type = 'GET';
	options.data = data;
	options.url = url;
	return request(options)
}

const post = (url, data, options = {}) => {
	options.type = 'POST';
	options.data = data;
	options.url = url;
	return request(options)
}
const put = (url, data, options = {}) => {
	options.type = 'PUT';
	options.data = data;
	options.url = url;
	return request(options)
}

const upload = (filepath = {}) => {
	// 在这里可以对请求头进行一些设置
	// 例如:
	let header = {
		"Content-Type": "application/json",
		"x-access-token": getToken()
	}
	return new Promise((resolve, reject) => {
		uni.uploadFile({
			url: baseUrl + '/api/wx/file/upload' || '', // 仅为示例,非真实的接口地址
			filePath: filepath,
			name: 'file',
			header: header,
		}).then(data => {
			let [err, res] = data;
			resolve(res);
		}).catch(error => {
			reject(error)
		});
	})
}

export default {
	request,
	get,
	post,
	put,
	baseUrl,
	upload
}