转载一个uni-app请求网络的文章.........

一、简单版
1.http.js 封装

// 定义api请求域名
const baseUrl = 'https://xxx.xxx.com'; //测试域名
// const baseUrl = '';//正式域名

const request = (options = {}) => {
    // 在这里可以对请求头进行一些设置
    options.header = {
        "token": uni.getStorageSync("token"),
        "Content-Type": "application/x-www-form-urlencoded",
    }
    return new Promise((resolve, reject) => {
        uni.request({
            url: baseUrl + options.url || '',
            method: options.type || 'GET',
            data: options.data || {},
            header: options.header || {}
        }).then(data => {
            let [err, res] = data;
            resolve(res);
        }).catch(error => {
            let [err, res] = error;
            reject(err)
        })
    });
}
//get请求
const get = (url, data, options = {}) => {
    options.type = 'GET';
    options.data = data;
    options.url = url;
    return request(options)
}
//post请求
const post = (url, data, options = {}) => {
    options.type = 'POST';
    options.data = data;
    options.url = url;
    return request(options)
}
//将变量和方法进行导出
export default {
    baseUrl,
    request,
    get,
    post,
}


2.main.js中全局引入

import Vue from 'vue'
import http from './common/http.js'
Vue.prototype.$http = http


3.在页面中使用index.vue

export default {
    methods:{
        login(){
            let data = {
                name:'zhangsan',
                password:'111'
            }
            this.$http.post('/api/login',data).then(res=>{
                console.log('登录返回信息',res)
            })
        }
    }
}


二、二次封装版
1.request.js


// 定义api请求域名
const baseUrl = 'https://xxx.xxx.com'; //测试域名
// const baseUrl = '';//正式域名

const request=(url,method,data,header)=>{
    return new Promise((resolve,reject)=>{
        uni.request({
            url:baseUrl+url,
            method:method || "GET",
            data:data,
            header:header || {
                "token": uni.getStorageSync("token"),
                "Content-Type": "application/x-www-form-urlencoded",
            }
        }).then(data=>{
            let [err,res] = data;
            resolve(res)
        }).catch(error=>{
            let [err,res] = error;
            reject(err)
        })
    })
}

export default {
    request,
    baseUrl,
}


2.api.js 全部api接口列表,引入request.js

import api from '@/common/request.js'
export default {
    login:(data,header)=>{
        return api.request('/api/login',"POST",data,header)
    }
}


3.在main.js中全局引入

import Vue from 'vue'
import api from './common/api.js';
Vue.prototype.$api = api;


4.在index.vue中使用

export default {
    methods:{
        login(){
            let data = {
                name:'zhangsan',
                password:'111'
            }
            that.$api.login(data).then(res=>{
                    console.log("登录信息",res);
                }).catch(err=>{
                    console.log("登记信息--失败",err);
                })
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值