uniapp — luch-request的使用

  • 插件市场下载luch-request,放入uni_modules文件夹
  • 根目录新建api文件夹,创建config.js文件
export const BASE_URL = 'http://127.0.0.1:8000'

export const MP_API_URL = BASE_URL + '/index.php/api/'

export const TOKEN = 'token'

export const USER_INFO = 'userInfo'

export const SYSTEM_CONFIG = 'systemConfig'
  • 创建request.js文件
import Request from '@/uni_modules/luch-request/index.js'
//注意uni_modules文件夹有两层luch-request

import {
	TOKEN,
    BASE_URL,
    MP_API_URL,
    USER_INFO,
    SYSTEM_CONFIG
} from '@/api/config.js';

const http = new Request({
	baseURL: MP_API_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) => {
	var code = response.statusCode.toString();
	var startChar = code.charAt(0);
	if (startChar == '2') {
		if(response.data.code == 1){
			return response.data
		}else if(response.data.code == 401){
			setTimeout(() => {
			  this.$t.message.toast('请登录后操作')
			}, 2000)
			uni.clearStorageSync();
			uni.switchTab({
				url: "/pages/index/index.vue"
			})
			return Promise.resolve(error)
		}else if(response.data.code == 0){
			this.$t.message.toast(response.data.msg)
		}
	} 
	
}, (error) => {
	return Promise.resolve(error)
})
export default http;
  • 可以每个模块一个接口文件,例如news.js
import request from '@/api/request.js'
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);
	}
}
  • news.vue文件夹调用
import news from '@/api/news.js'

news.getData({}).then(res => {
			  
}).catch(error=>{
				
});

 

© 版权声明
THE END
喜欢就支持一下吧
分享