uniapp 封装request请求包含token信息

1.首先在根目录新建common/http目录,然后在http中新建两个js如 图

2.http.js代码

import Vue from 'vue'
const request = (params) => {
	// 显示加载数据的提示
	uni.showLoading({
		title: '加载中',
		mask: true
	})
	return new Promise(function(resolve, reject) {
		const baseUrl = Vue.prototype.$baseUrl;
		let token_value=store.state.token;
		uni.request({
			method: params.method,
			data: params.data,
			url:baseUrl + params.url,
			header: {
                    此处是token 可不加,如果加了需要配置后端允许跨域
				'token': token_value
			},
			success(res) {
				setTimeout(function() {
					resolve(res)
				}, 500);
			},
			fail(err) {
				reject(err)
			},
			complete() {
				setTimeout(function() {
					uni.hideLoading()
				}, 500);

			}
		})
	})
}
export default request;

3.api.js 存放的是所有的接口

import request from "./http.js"
import Vue from 'vue'
export default {
	//获取app版本
	api_getUpdateApp: function(params) {
		return request({
			method: "POST",
			url: "index/app_fun/getUpdateApp",
			data: params
		});
	},
	///获取首页的功能列表
	api_getFunList:function(params) {
		return request({
			method:"POST",
			url:"api/app_fun/getFunList",
			data:params
		})
	},

}

 3.配置main.js,允许全局使用

import Vue from 'vue'
import App from './App'
import api from 'common/http/api.js'

Vue.prototype.$api = api

 if (process.env.NODE_ENV === 'development') {
 	//开发环境
 	Vue.prototype.$http="http://192.168.0.103/"
 	Vue.prototype.$baseUrl = "http://192.168.0.103/public/index.php/"
 	Vue.prototype.$fileUrl = "http://192.168.0.103/public/"
 } else {
 	//生产环境
	Vue.prototype.$http="https://s.june.com/"
 	Vue.prototype.$baseUrl = "https://s.june.com/public/index.php/"
 	Vue.prototype.$fileUrl = "https://s.june.com/public/" //图片展示域名
 }
App.mpType = 'app'

const app = new Vue({
	...App
})
app.$mount()

4.页面中调用接口

<template>
	<view class="content">

	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello',
			
			}
		},
		onLoad() {
               /* 该接口是在api.js中定义过的 */
			this.$api.api_getUpdateApp({
				user_id:'sdfsdfsd',
				name:'测试'
			}).then(res=>{
				/* 成功的回调 */
			}).catch(err=>{
				/* 失败回调 */
			}).finish(e=>{
				/* 成功或者失败都会执行 */
			})
		},
		methods: {

		}
	}
</script>

<style>

</style>

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: uniapp封装requesttoken的方法如下: 1. 在封装request的时候,需要定义一个全局的变量来保存用户的token,例如: ``` let token = ''; ``` 2. 在登录成功之后,将服务器返回的token保存到全局变量中,例如: ``` uni.request({ url: 'https://your-api.com/login', method: 'POST', success: function(res) { token = res.data.token; } }) ``` 3. 在发送请求时,将token加入到请求头中,例如: ``` uni.request({ url: 'https://your-api.com/data', method: 'GET', header: { 'Authorization': 'Bearer ' + token }, success: function(res) { console.log(res.data); } }) ``` 其中,'Bearer '是固定的前缀,用于告诉服务器这是一个Bearer Token。以上就是在uniapp封装requesttoken的方法。 ### 回答2: Uniapp是基于Vue开发的跨平台应用框架,可以方便地开发出支持多种平台的应用。在实际应用中,我们经常需要调用服务器接口获取数据,而服务器接口一般需要进行身份验证才能正确返回数据,通常需要将用户的token信息作为请求参数传递给服务器,以便服务器进行验证。 为了方便我们在Uniapp中进行网络请求,并且将token信息作为请求参数传递给服务器,我们可以使用Uniapp提供的封装request方法,并在请求头中添加token信息。下面是一个示例代码,演示如何封装requesttoken: ```javascript //封装request方法 function request(url, method, data) { //从本地Storage中获取token信息 let token = uni.getStorageSync('token') return new Promise((resolve, reject) => { uni.request({ url: url, method: method, data: data, header: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Bearer ' + token }, success: res => { resolve(res.data) }, fail: err => { reject(err) } }) }) } //调用接口获取数据 async function getData() { try { const res = await request('https://api.example.com/data', 'GET', {}) console.log(res) } catch (err) { console.log(err) } } ``` 在这段代码中,我们封装了一个request方法,用于进行网络请求。在方法中,我们首先从本地Storage中获取token信息,然后将token信息添加到请求头的Authorization字段中。在调用接口时,我们可以使用async/await语法,方便地处理异步回调,获取服务器返回的数据。 需要注意的是,我们在请求头中需要将token信息添加到Authorization字段中,并在token前添加Bearer前缀,以便服务器进行识别。同时,我们还需要指定Content-Type字段为application/x-www-form-urlencoded,表示请求参数为表单形式。 综上所述,我们可以通过对request方法的封装,方便地在Uniapp中进行网络请求,并将token信息作为请求参数传递给服务器,以便服务器进行身份验证和数据返回。 ### 回答3: uniapp是一款跨平台开发框架,它可以帮助开发者快速的进行App开发。在这个过程中,我们可能会用到很多网络请求,而且需要带上token去验证用户的合法性。那么,我们该如何来封装这个request呢? 首先,我们需要将request封装在一个util文件中,用export default将其导出。在util中,我们需要设置一个config对象,用来存放一些全局的配置信息,比如请求的baseUrl、token等。具体如下: ``` const config = { baseUrl: 'http://api.xxx.com', token: '' } ``` 接下来,我们通过封装request方法来达到带token请求的需求。具体实现如下: ``` export default function request(options) { options.url = config.baseUrl + options.url options.header = { Authorization: `Bearer ${config.token}`, 'content-type': 'application/json' } return new Promise((resolve, reject) => { uni.request({ ...options, success: res => { if (res.statusCode === 200) { resolve(res.data) } else { reject(res) } }, fail: err => { reject(err) } }) }) } ``` 在这个封装request中,我们首先通过设置一个全局的config对象来存放baseUrl和token信息,然后在request方法中,将baseUrl和请求的地址拼接在一起。 我们同时也在这个封装request中,设置了一个Authorization头,用来携带token。我们同时也设置了一个content-type头,表示请求的数据类型为JSON。 最后,我们还用Promise将返回结果进行包装,以便我们可以进行链式调用。 总的来说,通过这个封装request请求的方式,我们可以在调用时,传入所需的参数,然后封装的方法会将baseUrl和token信息拼接到header里,从而实现了带token请求的需求。这样我们的开发者在使用uniapp开发时,可以使用这个简单易用的request函数,让网络请求更加的便捷和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉臣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值