El subprograma de WeChat utiliza la promesa para encapsular wx.request ()

1. Estructura de directorio

Estructura de directorio de mini programas

Primero cree index.js en el directorio env, configure el entorno de desarrollo dentro y expórtelo

//配置不同的开发环境
module.exports={
    
    
  //开发环境
  Dev:{
    
    
    baseUrl:'http://123.207.32.32:8000/api/h8', //开发环境的接口
  },
  //测试环境
  Test:{
    
    
    baseUrl:'http://www.test.com'
  },
  //生产环境
  Prod:{
    
    
    baseUrl:'http://www.api.douban.com'
  }
}

Ingrese al directorio http y defina todas las direcciones URL de solicitud de manera uniforme en config.js, lo cual es conveniente para el mantenimiento y la administración.

//定义请求路径并抛出对象
module.exports={
    
    
  "banner":"/home/multidata",
  "list":"/home/list"
}

Lanzar una función de solicitud en request.js, el valor de retorno de la función es un objeto de promesa

//封装wx.request()网络模块

//抛出一个函数 这个函数会返回一个promise对象
module.exports=(url,method,data)=>{
    
    
  let p=new Promise((resolve,reject)=>{
    
    
    wx.request({
    
    
      url: url,       //请求路径
      method:method,    //请求方式
      data:Object.assign({
    
    },data),   //请求参数,使用浅拷贝
      header:{
    
    "Content":"application/text"},  //请求头,默认参数
      success(res){
    
       //成功的回调函数
        resolve(res)
      },
      fail(err){
    
        //失败的回调
        reject(err)
      }
    })
  })

  return p;
}

El índice de la función de entrada, aquí está el archivo de entrada, para que otros sepan para qué se usa la carpeta y cómo usarla.

//入口函数,引入环境变量,路径和方法在此处统一调用
const Env=require('../env/index')
const Url=require('./config')
const Request=require('./request')

console.log(Request);

//确定当前环境
let baseUrl=Evn.Dev.baseUrl
//如果接口需要token鉴权,获取token
let token=wx.getStorageSync('token') //获取本地存储的token

//请求的函数
//banner请求
function banner(){
    
    
  //调用该方法,传递路径(环境前缀+路径),方式,参数 函数结果会返回一个promise对象
  return Request(baseUrl+Url.banner,'get',{
    
    })
}
//xxx请求 直接照搬就行

//将封装好的方法抛出
module.exports={
    
    
  banner
}

El último paso es importar el índice en el app.js global y registrarse en el componente raíz

//app.js

//引入http请求模块
const http=require('./http/index')

//直接在App方法里简单粗暴挂载一个http方法,挂上去就能用
App({
    
    
  http,
})

cómo utilizar

//哪个文件要发送请求,就在头部引入app.js里面app这个全局对象
const app=getApp()
//使用方法简单粗暴,括号内可以传参数
app.http.banner().then(res=>{
    
    
	console.log(res)
})

De un vistazo, es básicamente lo mismo que la idea de Vue encapsular axios:
defina por separado la ruta y la función de solicitud, llámela en index.js y monte el método en el objeto global.
En el futuro, solo necesita modificar la ruta de solicitud correspondiente o agregar un nuevo método de solicitud al modificar.

Supongo que te gusta

Origin blog.csdn.net/weixin_51198863/article/details/111377514
Recomendado
Clasificación