首页 > 编程语言 >如何优雅的使用微信小程序的wx.request请求(封装request.js工具类)

如何优雅的使用微信小程序的wx.request请求(封装request.js工具类)

时间:2023-11-21 16:15:23浏览次数:33  
标签:封装 请求 url 微信 request js res data

首先官方的文档不是支持Promise风格的请求 我们通过官方文档可以看到微信小程序发请求的一些具体参数,下面的代码展示了用wx.request()发送的一个标准请求:

wx.request({
          url: "https://xxx.com",
          method:"POST",
          data:{
            phone:187********,
            password:'123456'
          },
          success:res=>{
            console.log('登录成功',res)
          },
          fail:err=>{
            console.log('登录失败',err)
          }
        })

封装

在封装前我们需要知道用wx.request发请求的几个比较重要的参数:

  • url -- 请求地址

  • method -- 请求方式(Get/Post,这里我们只封装这2个请求)

  • data -- 请求的参数

  • success -- 接口调用成功的回调函数

  • fail -- 接口调用失败的回调函数

OK,了解完这几个参数后我们开始正式封装一个Promise风格的请求

/**
       request.js
     * 封装一个Promise风格的通用请求
     * url - 请求地址
     * option - 包含请求方式、请求参数的配置对象
 */
 var app = getApp(); //引入全局app.js,我们可以在globalData中定义一些公用的数据,比如baseUrl、token
 import Toast from '/@vant/weapp/toast/toast';//引入vant插件,用于提示错误
 const request = function(url,options){
     return new Promise((resolve,reject)=>{
         wx.request({
             url:app.globalData.baseUrl+url,
             method:options.method,
             data:options.method=="GET"?options.data:JSON.stringify(options.data),
             // header这里根据业务情况自行选择需要还是不需要
             header:{
                 'Authorization':'Bearer '+app.globalData.token
             },
             success: (res) => {
                if (res.data.code == 500) {
                  Toast(res.data.msg);
                  reject(res.data.msg)
                } else {
                  resolve(res)
                }
              },
              fail: (err) => {
                reject(err)
              }
         })
     })
 }
    
​
   module.exports = {
       //封装get方法
       get(url,data){
           return request(url,{
               method:"GET",
               data
           })
       },
       //封装post方法
       post(url,data){
           return request(url,{
               method:"POST",
               data
           })
       }
   }

这样,一个简单的Promise风格的请求就封装好了,接下来我们看如何使用

使用

//api.js 我们将所有的接口统一管理
    const request = require("./request") //引入封装好的js文件
    module.exports = {
      // 登录
      login(data){
       return request.post('/user/login',data)
      }
    }

 

// login.js
   const api = require("../../api") //引入同意管理的接口js
   const app = getApp() //引入全局对象
   import Toast from '/@vant/weapp/toast/toast'; //引入vant提示插件
   Page({
       data:{
           phone:123456,
           code:0000
       },
       //登录
       login() {
        if (!this.data.phone.trim()) {
          Toast('请输入正确的手机号');
          return
        }
        let data = {
          phone: this.data.phone,
          password: this.data.password,
        }
        api.login(data)     //这里直接用api调用login即可
          .then(res => {
            console.log('登录成功', res)
            wx.reLaunch({
              url: '../index/index',
            })
          })
          .catch(err => {
            console.log('登录失败', err)
          })
      },
     })

标签:封装,请求,url,微信,request,js,res,data
From: https://www.cnblogs.com/hanlinyuan/p/17846801.html

相关文章

  • FinClip解决繁琐的第三方微信授权登录流程
    用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。微信的授权登录在日常应用中应用的非常广泛,越来越多的平台支持用户使用微信进行授权第三方登录.使用微信授权登录有哪些优势/好处;用户量足够大,基本所有用户都会有微信,登录......
  • js常见操作,获取随机数、定时器
    一、js获取随机数的方法1、Math.random()方法,该方法返回一个大于等于0且小于1的伪随机浮点数。如果需要获取特定范围内的随机数,可以使用数字运算来调整结果。//获取0到1之间的随机数varrandomNum=Math.random();//获取0到10之间的随机整数varrandomInt=Math.floor(Math.ra......
  • nodejs学习04——express框架
    搭建环境新建一个文件夹LearnExpress,命令行://初始化包npminit//安装expressnpmiexpress初体验//1.导入expressconstexpress=require('express');//2.创建应用对象constapp=express();//3.创建路由规则app.get('/home',(req,res)=>{ //res.end('......
  • 【Python】geopandas 读取 shp/geojson 边界文件
    1.读取shp/geojson边界文件importgeopandasasgpdfile='media/abc.geojson'gdf=gpd.read_file(file)#将GeoDataFrame转换为GeoJSON字符串geojson=json.loads(gdf.to_json())features=geojson['features']2.获取边界文件的网格范围importgeopandas......
  • 微信附近人wxid采集工具,可通过QQ附近人提取转换,易语言版接口代码
    这个调用的是一个POST接口,我用fiddler抓取的,并非是逆向或者是破解奥,是正常公开的接口,我只是对数据对了一些编码转换和整理,可以提取附近人的数据包,然后通过数据包可以直接加微信,就这么简单,但是还是存在一些技术原理,ck是我自己账号的我就不提供了。框架设计界面: 数据包可以直接......
  • qq附近人提取脚本插件,微信wxid附近人提取接口工具,易语言代码分享,POST方式学习教程
    其实打开Qq附近人后它会返回一个数据包我们只需要把这个数据包提取解析出来就可以提取对方的wxid或者是QQ号,通过这个WXID还能直接加好友,而且是免费的接口,我今天把基础源码和案例图发给大家,免费分享,没有HOOK也没有逆向,就抓包实现的,正常逻辑哈,并非是违规开发。框架图:  转换后......
  • nodejs升级引起的构建错误
      参考实际使用升级webpacknpminstall-Dwebpack@latest升级vue-clinpminstall-g@vue/cli创建vue-clidemo重新配置vue.configwebpack>5报错问题 1、运行下面这行指令,安装在Webpack中PolyfillNode.js核心模块。npminstallnode-polyfill-webpack......
  • Flask之request.json()和 request.form.get()
    在Flask中,request.json和request.form.get()用于从HTTP请求中获取数据,但它们主要用于不同类型的数据传递方式。request.json:用于从包含JSON数据的请求体中提取数据。适用于POST请求中包含JSON数据的情况,通常是通过AJAX请求或使用Content-Type:application/json标头发......
  • 2023-11-21 托管第三方开发的小程序如何加急发布?==》需要调用微信提供的接口去发布
    接口地址:https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/code-management/speedupCodeAudit.html 你可以在这里调试:https://developers.weixin.qq.com/apiExplorer?apiName=startPushTicket&plat=thirdparty 注:审核单id为你提......
  • Python下使用requests库遇到的问题及解决方案
    每一盏灯都有一个故事……当凌晨2点我的房间灯还亮着时,那就是我与BUG的一场生死博弈。一个人静静地坐在电脑前不断地写代码,感觉快要麻木了,好比闭关修炼一样枯燥无味。最终当我打通任督二脉后,bug修复迎来的一片曙光。一、问题背景在最近的项目中,我使用Python3.6和DigestAuth进行身......