Uni-app---封裝request.js
阿新 • • 發佈:2020-08-10
最近在用Uni-app做混合APP開發,對於眾多的介面請求,為了方便管理,採用封裝request來方便管理。簡單程式碼示例:
在utils目錄新建config.js檔案,用於做配置
let host = ""; if(process.env.NODE_ENV === 'development'){ // 開發環境 host = "http://www.dianphp.com/"; }else{ // 生成環境 host = "http://www.dianphp.com/"; } export default host;
在utils目錄新建request.js檔案,用於分裝請求
import host from './config.js' const header = {} const request = (url='',method='POST',data={}) => { header['content-type'] = "application/x-www-form-urlencoded"; return new Promise((resolve,reject) => { uni.request({ method:'post', url:host + url, data:data, header:header, dataType:'json' }).then((response) => { let [error,res] = response; // 登入過期 if(res.code == 10086){ uni.showToast({ title:'登入過期,請重新登入', duration:2000 }); }; resolve(res.data); }).catch((error) => { let [err,res] = error; reject(err); }); }); } export default request
新建api目錄,存放api.js
import request from '@/utils/request.js' module.exports = { // 登入 login(data){ return request('api/user/login','post',data); } }
在需要進行http請求的頁面如何使用?
第一步:引入api.js
import api from '@/api/api.js'
第二步:使用api
api.login(this.accountPassword).then(res => { console.log(res); });
其他方法示例:
utils目錄新建request.js用於分裝請求
export default class Request { http (router,data={},method) { // 基礎地址 let path = 'http://tm.jiangzi.com/v1'; // 返回promise return new Promise((resolve,reject) => { // 請求 uni.request({ url: `${path}${router}`, data: data, method:method, header: { 'content-type': 'application/json' , 'X-Requested-With':'XMLHttpRequest' }, success: (res) => { // 將結果丟擲 resolve(res.data) } }) }) } }
新建api.js
import Request from './request.js'; let request = new Request().http //請求方法 export default { getPageData: function (data) { return request('/category',data,'POST') }, getSearch: function (data) { return request('/search',data,'POST') }, getrichtext: function (url) { return request(url,'','GET') } }
元件裡面呼叫:
import api from '../../static/js/api.js'; api.getPageData('').then(res => { console.log(res) })
另外,還可以將api.js進行全域性引入:
第一步:在main.js裡面進行引入:
import api from './api/api.js'
第二步:放到全域性
Vue.prototype.$api = api
介面呼叫:
this.$api.login({username:'張三',password:'123456'}).then((res) => { console.log(res); });