uniapp 封装api

src下新建文件夹,api文件夹,api下有config.js 和 list.js

config.js内容


let urlHost = "/"

const service = (params = {}, control) => {
    return new Promise((resolve, reject) => {
        let requestTask = uni.request({
            url: urlHost + params?.url,
            data: params?.data || {},
            header: params?.header,
            method: params?.method || "GET",
            success: res => {
                resolve(res)
            },
            fail: err => {
                reject(err)
            }
        })
        if (control) control(requestTask)

    })
}

//--------------------------base post get function start ---------------------
export function basePostFun(url, data, control, token = "") {
    let params = {
        url: url,
        method: "POST",
        data,
        token,
        header:{
            SessionId: token,
            "Content-Type":  "application/x-www-form-urlencoded"
        },
    }
    return new Promise((resolve, reject) => {
        service(params, control).then(
            res => {
                let data = res.data
                if (data.status === 200) resolve(data)
                else reject(data)
            },
            err => reject(err),
        )
    })
}

export function baseGetFun(url, data, control, token = "") {
    let params = {
        url,
        data,
        token,
        header:{
            SessionId: token,
        },
    }

    return new Promise((resolve, reject) => {
        service(params, control).then(
            res => {
                let data = res.data
                if (data.status === 200) resolve(data)
                else reject(data)
            },
            err => reject(err),
        )
    })
}


//--------------------------base post get function end ---------------------

list.js内容 

import { basePostFun } from "./config.js"

export  function testPost(data,control) {
    return basePostFun("user/login",data,control)
}

export default {
	testPost
}

main.js中引入,配置到全局

import apiList from 'api/list.js'
Vue.prototype.$api = apiList

 使用

login() {
      this.$api.testPost({usr:this.usr,pwd:this.pwd}).then(
        data=>{
          console.log("请求成功",data);
        },
        err=>{
          console.log("请求失败",err);
        }
      )
    },

如果要控制请求的取消可以这样

login() {
      let requestTask = null
      this.$api.testPost({usr:this.usr,pwd:this.pwd},v=>requestTask=v).then(
        data=>{
          console.log("请求成功",data);
        },
        err=>{
          console.log("请求失败",err);
        }
      )
      // 中间遇到一些其它相取消请求,可以这样中断请求任务
      requestTask.abort();
      
    },

解决manifest.json配置h5的请求跨域问题 

 后面加上这一段

"h5": {
		"devServer": {
		  "proxy": {
			"/": {
			  "pathRewrite": {
				"^/": ""
			  },
			  "target": "http://127.0.0.1:5665"/*为服务器的地址*/
			}
		  }
		},
		"publicPath": "./"
	  }

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值