- 插件市场下载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