uniapp封装uni-request

新建request.js,其中common存放url等公共资源,userinfo存储token和用户信息等

import uniRequest from 'uni-request';
import common from "../utils/common.js";
import userinfo from './userinfo.js';

uniRequest.defaults.baseURL = common.baseUrl();
uniRequest.defaults.headers.common['Authorization'] = 'Bearer ' + uni.getStorageSync('token');
// uniRequest.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
uniRequest.defaults.headers.post['Content-Type'] = 'application/json';

// uniRequest方法别名
// uniRequest.request(config)
// uniRequest.get(url[, config])
// uniRequest.delete(url[, config])
// uniRequest.head(url[, config])
// uniRequest.options(url[, config])
// uniRequest.post(url[, data[, config]])
// uniRequest.put(url[, data[, config]])
// uniRequest.patch(url[, data[, config]])

// 请求拦截
uniRequest.interceptors.request.use(
	request => {
		// 可配置基本信息	
		request.headers.common.Authorization = 'Bearer ' + uni.getStorageSync('token')
		return request;
	},
	err => {
		console.log('请求拦截err:' + err);
		return Promise.reject(err);
	});

// 响应拦截
uniRequest.interceptors.response.use(function(response) {
	if (response.status == 401) {
		// 清空userinfo和token信息,重新请求获取token
		uni.navigateTo({
			url: "/pages/login/login"
		})
	}
	return Promise.resolve(response);
}, function(err) {
	console.log('响应拦截err')
	if (err && err.response) {
		// 自定义,暂未更改
		switch (err.response.status) {
			case 301:
				err.message = '请求的数据具有新的位置且更改是永久的';
				break
			case 302:
				err.message = '请求的数据临时具有不同 URI';
				break
			case 304:
				err.message = '未按预期修改文档';
				break
			case 305:
				err.message = '必须通过代理来访问请求的资源';
				break
			case 400:
				err.message = '请求中有语法问题,或不能满足请求';
				break
			case 402:
				err.message = '所使用的模块需要付费使用';
				break
			case 403:
				err.message = '当前操作没有权限';
				break
			case 404:
				err.message = '服务器找不到给定的资源';
				break
			case 407:
				err.message = '客户机首先必须使用代理认证自身';
				break
			case 415:
				err.message = '请求类型不支持,服务器拒绝服务';
				break
			case 417:
				err.message = '未绑定登录账号,请使用密码登录后绑定';
				break
			case 426:
				err.message = '用户名不存在或密码错误';
				break
			case 429:
				err.message = '请求过于频繁';
				break
			case 500:
				err.message = '服务器内部错误,无法完成请求';
				break
			case 501:
				err.message = '服务不支持请求';
				break
			case 502:
				err.message = '网络错误,服务器接收到上上游服务器无效响应';
				break
			case 503:
				err.message = '服务器无法处理请求';
				break
			case 504:
				err.message = '网络请求超时';
				break
			case 999:
				err.message = '系统未知错误,请反馈给管理员';
				break
		}
	} else {
		err.message = '连接服务器失败!'
	}
	console.log(err.message)
	return Promise.reject(err);
});

export function myRequest(options) {
	let headers = {}
	var Token = uni.getStorageSync('token');
	var UserId = uni.getStorageSync('UserId');
	headers["Content-Type"] = "application/json";
	return new Promise((res, rej) => {
		uni.request({
			url: baseURL + options.url,
			method: options.method || 'GET',
			data: options.data,
			header: headers,
			success(data) {
				res(data)
			},
			fail() {
				rej()
			}
		})
	})

}
export default {
	uniRequest: uniRequest
}

在main.js全局挂载

import request from './utils/request.js'
Vue.prototype.$request = request

使用:

async getUserInfo() {
			const result = await this.$request.uniRequest.get('user/...')
			if (result.status == 200) {
				...
			}
		},
const result = await this.$request.uniRequest.post('document', {
					title: '',
					content: '',
					type: 0
				});
const result = await this.$request.uniRequest.put("/user/" + user_id)
const result = await this.$request.uniRequest.delete("/user/" + user_id)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值