Uni-app封装请求


Uni-app封装请求

新建一个api.js文件,主要放请求封装的代码

const baseUrl = 'http://172.0.0.1:8080';
const httpRequest = (opts, data) => {
    let httpDefaultOpts = {
        url: baseUrl + opts.url,
        data: data,
        method: opts.method,
        header: opts.method == 'get' ? {
            'X-Requested-With': 'XMLHttpRequest',
            "Accept": "application/json",
            "Content-Type": "application/json; charset=UTF-8"
        } : {
            'X-Requested-With': 'XMLHttpRequest',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        },
        dataType: 'json',
    }
    let promise = new Promise(function(resolve, reject) {
        uni.request(httpDefaultOpts).then(
            (res) => {
                resolve(res[1])
            }
        ).catch(
            (response) => {
                reject(response)
            }
        )
    })
    return promise
};
//带Token请求
const httpTokenRequest = (opts, data) => {
    let token = "";
    uni.getStorage({
        key: 'token',
        success: function(ress) {
            token = ress.data
        }
    });
    //此token是登录成功后后台返回保存在storage中的
    let httpDefaultOpts = {
        url: baseUrl + opts.url,
        data: data,
        method: opts.method,
        header: opts.method == 'get' ? {
            'Token': token,
            'X-Requested-With': 'XMLHttpRequest',
            "Accept": "application/json",
            "Content-Type": "application/json; charset=UTF-8"
        } : {
            'Token': token,
            'X-Requested-With': 'XMLHttpRequest',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        },
        dataType: 'json',
    }
    let promise = new Promise(function(resolve, reject) {
        uni.request(httpDefaultOpts).then(
            (res) => {
                resolve(res[1])
            }
        ).catch(
            (response) => {
                reject(response)
            }
        )
    })
    return promise
};

export default {
    baseUrl,
    httpRequest,
    httpTokenRequest
}

封装代码为二种,一种是无token请求,另一种是token,按照自己的需求去调用想要的请求方式

在main.js将它全局挂载

import Vue from 'vue'
import App from './App'
import {
    myRequest
} from './util/api.js'

Vue.prototype.$myRequest = myRequest

Vue.config.productionTip = false

App.mpType = 'app'

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

在页面中使用$myRequest(可自己定义)去调用封装好的请求方法

let opts = {
    url: '/api/add',
    method: 'post'
};
let param = {
    deviceId: this.deviceCode,
    deviceName: this.deviceName
};
$myRequest.httpTokenRequest(opts, param).then(res => {
    console.log(res.data);
    //打印请求返回的数据

}, error => {
    console.log(error);
})

到这里一个简易详情的uni-app封装请求就结束了,自己有更多的需求,可以自己去添加和修改


文章作者: 曹豆芽
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 曹豆芽 !
 上一篇
linux的CentOS7防火墙的使用 linux的CentOS7防火墙的使用
linux的CentOS7防火墙的使用整理了一些关于防火墙的命令行使用 基本命令行启动:systemctl start firewalld.service 停止:systemctl stop firewalld.service 重启: sy
2020-05-19
下一篇 
es6的基本使用 es6的基本使用
ES6的一些基本使用变量声明var let 都可用于声明变量. 区别:1、let:只在let命令所在代码块内有效 ​ 2、let 不存在变量提升(内部影响不到外部) var b = []; for(var j=0;
2020-05-03
  目录