在项目的根目录下,创建http文件夹。

然后在创建request.js文件

文件代码如下

export  function apiapi(myurl,myget,mydata,tou="Accept: text/plain" ){
return new Promise((resolve,reject)=>{
uni.request({
url: myurl, //真实接口地址。 method:myget||"get",//请求的方式 data:mydata||{},//参数 header: {
'custom-header': tou//自定义请求头信息,这里也可以携带token
}, // 成功使用resolve
success: (res) => {
resolve(res)
}, //失败调用reject
fail:(err)=>{
reject(err)
}
});
})
}
我是使用的promise进行封装的。
对promise封装的注意点
要有返回值 return
resolve,是成功时直接调用。将要传递的参数放入进去resolve(res)
reject失败错误直接调用。将要传递的参数直接放进去reject(err) 注意
在一个模块中,可以同时使用export default 和export 向外暴露成员
使用export向外暴露的成员,使用{ }的形式来接收,这种形式,叫做【按需导出】
使用export导出的成员,必须严格按照导出时候的名称,来使用{ }按需接收
使用export导出的成员,如果想换个变量名称接收,可以使用as来起别名
import {title, content as content1} from './test.js'

在某一个页面使用

先引入;这里注意导入的apiapi应该和暴露出来的一致哈!
import {apiapi} from "../../http/request.js" //监听页面加载(常用来发送请求)
onLoad(option){
apiapi("https://edu.51cto.com/center/seckill/index/get-seckill-data","GET", { page:1,size:1},).then(res=>{
console.log("zijide",res);
}).catch(err=>{
console.log(err);
})
},

按照上面这样封装,会出现一个问题就是。

每次使用的时候,都会引入。这样会很麻烦的。

因为我们几乎每一个页面都发是哪个请求

所以可以优化一下

将这个文件在main.js中引入。

然后挂载到Vue的原型上。

然后就可以直接使用了。因为原型的特点就是数据共享,节约空间

main.js

//因为是export暴露出来的,所以要使用{}来接受哈
import {apiapi} from "./http/request.js" //直接挂载到原型上 通过this.$api直接调用
Vue.prototype.$api=apiapi;

在某个使用的页面

不需要再次引入了,因为挂载到原型上的
//监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参)
onLoad(option){
this.$api("https://edu.51cto.com/center/seckill/index/get-seckill-data","GET", { page:1,size:1},).then(res=>{
console.log("优化封装",res);
}).catch(err=>{
console.log(err);
})
},

我们在项目中,通常是将所有的请求放在同一个文件中。

这样方便我们管理

所以在 https文件夹中再新建一个文件,

命名为api.js

api.js文件

import {apiapi}  from "./https.js"

export const aa= params=>apiapi('https://edu.51cto.com/center/seckill/index/get-seckill-data', 'get',params);

这一句等价于
// 如果只有一个参数,可以省略括号。params是参数。
// export const aa= params=> 说明是一个匿名函数
// 去掉大括号的时候,可以去掉retuen. // const aa=function(params){
// return apiapi('https://edu.51cto.com/center/seckill/index/get-seckill-data', 'get',params)
// }
// export aa
main.js挂载到原型上
//引入进行接收
//listapi 身上有很多的方法,那个api.js所有的方法都在listapi上
import * as listapi from './http/api.js'; //挂载到原型上
Vue.prototype.$listapi=listapi;

使用页面

onLoad(option){
this.$listapi.aa( { page:1,size:1}).then(res=>{
console.log("再次封装11数据",res);
}).catch(err=>{
console.log(err);
})
},

这样使用起来是不是更加的简单了。

更加的方便了呢。

将所有的接口进行统一的管理。便于维护了

uni-app封装网络请求promise的更多相关文章

  1. App 组件化/模块化之路——如何封装网络请求框架

    App 组件化/模块化之路——如何封装网络请求框架 在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库.例如 okhttp retrofit android-asyn ...

  2. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据

    § 封装网络请求及 mock 数据 本文配套视频地址: https://v.qq.com/x/page/i05544fogcm.html 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发 ...

  3. 09事件传递参数-封装网络请求api get和post合并整合在一起

    1==>通过点击事件进行传递参数 <view bindtap="goEdution" data-index="5">西南大学</view ...

  4. [iOS微博项目 - 3.3] - 封装网络请求

    github: https://github.com/hellovoidworld/HVWWeibo   A.封装网络请求 1.需求 为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网 ...

  5. 转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)

    http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一 ...

  6. andriod开发,简单的封装网络请求并监听返回.

    一.为什么封装 因为android 4.0 以后的发送网络请求必须要放到异步线程中,而异步线程必须跟handle合作才能更新主线程中的UI,所以建议用一个类继承handler来异步处理网络请求. 二. ...

  7. 第六十二篇、AFN3.0封装网络请求框架,支持缓存

    1.网络请求 第一种实现方式: 功能:GET POST 请求 缓存逻辑: 1.是否要刷新本地缓存,不需要就直接发起无缓存的网络请求,否则直接读取本地数据 2.需要刷新本地缓存,先读取本地数据,有就返回 ...

  8. IOS 京东相关app 出现“网络请求失败,请检查您的网络设置”的解决办法

    问题情况 在IOS系统下,下载安装或者更新新版的京东相关app之后,打开app直接就是“网络请求失败,请检查网络设置”,无论是数据连接还是wifi都试了,都是网络请求失败. 然而打开无线局域网-使用无 ...

  9. 分析移动端APP的网络请求抓包

    为了方便,本文以 iOS 系统来进行演示. 使用代理 移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中可以通过 Settings->WLAN 看到很多 Networks,通过点击它们 ...

  10. ios中封装网络请求类

    #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 ...

随机推荐

  1. 女友用python写的充值卡冲话费的代码

    女友最近在学习python ,于是我拿当初我们学习C语言的课程设计 手机号充话费功能让她尝试着做一下,在分析完思路和帮助改错的情况下代码如下: python2.7.17 环境 #/usr/bin/py ...

  2. 用python 将数字每三组分割

    def cut_num(n, sep=','): # 第一个参数是要传递的数字,第二个是分隔符 s = str(abs(n))[::-1] groups = [] i = 0 while i < ...

  3. 你不知道的5个JVM命令行标志

    本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿"你不知道5个--"系列的一篇文章:JVM有数百个命令行选项,在 ...

  4. django插件之django-import-export

    文档:https://django-import-export.readthedocs.io/en/latest/getting_started.html#creating-import-export ...

  5. linux下的rpm与yum

    一.源代码形式 1.      绝大多数开源软件都是直接以原码形式发布的 2.      源代码一般会被打成.tar.gz的归档压缩文件 3.      源代码需要编译成为二进制形式之后才能够运行使用 ...

  6. SpringBoot+logback 日志打印脱敏,正常获取对象不受影响

    添加依赖 注意:springboot版本2.7.0 <dependency> <groupId>org.slf4j</groupId> <artifactId ...

  7. 初识RPA以及简单的RPA项目——微信群发机器人

    一.RPA的认识和理解 RPA(Robotic Process Automation)即是机器人流程自动化,简称RPA,是一种自动化技术,可以帮助组织实现业务流程的自动化执行,提高效率和准确性.按我的 ...

  8. pg_index

    在pg11之后,引入了indnkeyatts字段,根据官方文档解释其作用:The number of key columns in the index, not counting any includ ...

  9. 在Python工具箱中,创建对应子工具集

    目录 问题描述 实现方法 问题描述 在Pro中,新建自定义工具箱后,直接通过操作可以添加工具集. 但是新建python工具箱后,却没有新建的操作.因为python工具箱的对象定义,都是在脚本中定义的, ...

  10. Fuzz技术综述与文件Fuzz

    文章一开始发表在微信公众号 https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247486189&idx=1&sn= ...