uniapp功能篇-1.二次封装luch-request(类似于axios)

每个项目的需求各有偏差,务必根据自己的项目调整相关配置

npm i luch-request -S

1.创建url.js 文件

方便调整线上与调试模式的数据地址

	//基础Api
	const BASE_API="http://xxx.xxx.xxx:8801/"
export{
	BASE_API
}

2.创建 httpload.js 文件

import Request from '@/utils/luch-request/index.js'
import {
	BASE_API
} from '@/http/url.js'
// import qs from 'qs'
const http = new Request({
	baseURL: BASE_API, //设置请求的base url
	timeout: 300000, //超时时长5分钟,
	header: {
		'Content-Type': 'multipart/form-data;application/json;charset=UTF-8;'
	}
})

//请求拦截器
http.interceptors.request.use((config) => { // 可使用async await 做异步操作
	const token = uni.getStorageSync('token');
	if (token) {
		config.header={
			"Authorization":'Bearer ' + token
		}
	}

	if (config.method === 'POST') {
		config.data = JSON.stringify(config.data);
	}
	return config
}, error => {
	return Promise.resolve(error)
})

// 响应拦截器
http.interceptors.response.use((response) => {
	console.log(response)
	return response
}, (error) => {
	//未登录时清空缓存跳转
	if (error.statusCode == 401) {
		uni.clearStorageSync();
		uni.switchTab({
			url: "/pages/index/index.vue"
		})
	}
	return Promise.resolve(error)
})
export default http;

3.创建api文件夹,将以下代码放入index.js

api封装后导出供页面使用

import request from '@/http/httpload.js'
		/* 测试Api */
	export default{
		// get请求 可以拼接url或者传入数据对象 二选一
		getData(data){
			// 传入的data对象  {ip:'121.00.00.01'}; 
			return request.get("/ip/getIpInfo.php",{params:data});
		},
		// post请求
		postData(data){
			// 传入的data对象  {ip:'xxxxxx'}; 
			return request.post("/ip/getIpInfo.php",data);
		},
		// put请求
		putData(data){
			// 传入的data对象  {ip:'xxxxxx'}; 
			//put方法大部分会以拼接地址的形式使用 如:request.put("/test/getInfo.php?id="+4)
			return request.put("/ip/getIpInfo.php",data);
		},
		// delete请求
		deleteData(data){
			// 传入的data对象  {ip:'xxxxxx'}; 
			//delete方法大部分会以拼接地址的形式使用 如:request.delete("/test/getInfo.php?id="+4)
			return request.delete("/ip/getIpInfo.php",data);
		}
	} 

4.页面中调用

<template>
  <div>
    <el-button class="el-icon-user" @click="getData">获取数据</el-button>
  </div>
</template>
<script>
import TestApi from "@/api/index.js";
export default {
  name: "testDemo",
  methods: {
    getData() {
      var data={id:'xxxxxxx'}
      TestApi.getData(data).then(res => {
         console.log(res);
      }).catch(error=>{
        console.log(error);
      });
    }
  }
};
</script>
  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

情系半生e

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

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

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

打赏作者

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

抵扣说明:

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

余额充值