uniapp 网络请求封装

uniapp 网络请求封装

一、简单版

1.http.js 封装

// 定义api请求域名
const baseUrl = 'https://xxx.xxx.com'; //测试域名
// const baseUrl = '';//正式域名

const request = (options = {}) => {
	// 在这里可以对请求头进行一些设置
	options.header = {
		"token": uni.getStorageSync("token"),
		"Content-Type": "application/x-www-form-urlencoded",
	}
	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 => {
			let [err, res] = error;
			reject(err)
		})
	});
}
//get请求
const get = (url, data, options = {}) => {
	options.type = 'GET';
	options.data = data;
	options.url = url;
	return request(options)
}
//post请求
const post = (url, data, options = {}) => {
	options.type = 'POST';
	options.data = data;
	options.url = url;
	return request(options)
}
//将变量和方法进行导出
export default {
	baseUrl,
	request,
	get,
	post,
}

2.main.js中全局引入

import Vue from 'vue'
import http from './common/http.js'
Vue.prototype.$http = http

3.在页面中使用index.vue

export default {
	methods:{
		login(){
			let data = {
				name:'zhangsan',
				password:'111'
			}
			this.$http.post('/api/login',data).then(res=>{
				console.log('登录返回信息',res)
			})
		}
	}
}
二、二次封装版

1.request.js


// 定义api请求域名
const baseUrl = 'https://xxx.xxx.com'; //测试域名
// const baseUrl = '';//正式域名

const request=(url,method,data,header)=>{
	return new Promise((resolve,reject)=>{
		uni.request({
			url:baseUrl+url,
			method:method || "GET",
			data:data,
			header:header || {
				"token": uni.getStorageSync("token"),
				"Content-Type": "application/x-www-form-urlencoded",
			}
		}).then(data=>{
			let [err,res] = data;
			resolve(res)
		}).catch(error=>{
			let [err,res] = error;
			reject(err)
		})
	})
}

export default {
	request,
	baseUrl,
}

2.api.js 全部api接口列表,引入request.js

import api from '@/common/request.js'
export default {
	login:(data,header)=>{
		return api.request('/api/login',"POST",data,header)
	}
}

3.在main.js中全局引入

import Vue from 'vue'
import api from './common/api.js';
Vue.prototype.$api = api;

4.在index.vue中使用

export default {
	methods:{
		login(){
			let data = {
				name:'zhangsan',
				password:'111'
			}
			that.$api.login(data).then(res=>{
					console.log("登录信息",res);
				}).catch(err=>{
					console.log("登记信息--失败",err);
				})
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值