[小程序开发] 设置request封装请求参数

一、在类中定义实例属性,用来设置默认请求参数

defaults={
		baseURL:'',//请求基准地址
		url:'',//接口的请求路径
		data:null,//请求参数
		method:'GET',//默认的请求方法
		//请求头
		header:{
			'Content-type':'application/json'//设置数据的交互格式
		},
		timeout:60000//默认的超时时长,小程序默认的超时时长是1分钟
	}

二、 在实例化时传入的参数,会被constructor形参进行接收

constructor(params={}){
		// 通过Object.assign方法合并请求参数
		// 注意:需要传入的参数,覆盖默认的参数,因此传入的参数需要放到最后
		this.defaults = Object.assign({},this.defaults,params)
	}

 三、在 request实例方法中合并参数

        // 需要先合并完整的请求地址(baseURL+url)
		options.url = this.defaults.baseURL + options.url
		// 合并请求参数
		options={...this.defaults,...options}

四、在实例化时传递参数

const instance = new WxResquest({
	baseURL:'https://blog.csdn.net',
	timeout:15000
})

五、完整代码

        1、封装代码

// 创建WxResquest类
// 通过类的方式来进行封装,会让代码更具有复用性,也可以方便添加新的属性和方法
class WxResquest{

	// 定义实例属性,用来设置默认请求参数
	defaults={
		baseURL:'',//请求基准地址
		url:'',//接口的请求路径
		data:null,//请求参数
		method:'GET',//默认的请求方法
		//请求头
		header:{
			'Content-type':'application/json'//设置数据的交互格式
		},
		timeout:60000//默认的超时时长,小程序默认的超时时长是1分钟
	}

	// 用于创建和初始化类的属性以及方法
	// 在实例化时传入的参数,会被constructor形参进行接收
	constructor(params={}){
		// 通过Object.assign方法合并请求参数
		// 注意:需要传入的参数,覆盖默认的参数,因此传入的参数需要放到最后
		this.defaults = Object.assign({},this.defaults,params)
	}
	// request实例方法接收一个对象类型的参数,属性值和wx.request方法调用时传递的参数保持一致
	request(options){

		// 需要先合并完整的请求地址(baseURL+url)
		options.url = this.defaults.baseURL + options.url
		// 合并请求参数
		options={...this.defaults,...options}

		// 需要使用Promise封装wx.request,处理异步请求
		return new Promise((resolve,reject)=>{
			wx.request({
			  ...options,
			//   当接口调用成功时会触发success回调函数
			  success:(res)=>{
				  resolve(res)
			  },
			//   当接口调用失败时会触发fail回调函数
			  fail:(err)=>{
				  reject(err)
			  }
			})
		})
	}
}

// 以下是实例化代码
// 目前写到一个文件中,是为了方便进行测试,以后会提取成多个文件

// 对WxResquest进行实例化
const instance = new WxResquest({
	baseURL:'https://blog.csdn.net',
	timeout:15000
})

// 将WxResquest实例进行暴露出去,方便再其他文件中进行使用
export default instance

        2、调用代码

// pages/test/test.js
import instance from '../../utils/request'
Page({
    async handler(){
        const res = await instance.request({
            url:"/Hang_Q?spm=1000.2115.3001.5343",
            method:'GET'
        })
        console.log(res)
    }
})

相关推荐

  1. [程序开发] 设置request封装请求参数

    2024-04-01 00:08:04       43 阅读
  2. 微信原生程序封装网络请求wx.request

    2024-04-01 00:08:04       32 阅读
  3. Python requests请求封装

    2024-04-01 00:08:04       55 阅读
  4. 微信程序封装网络请求设置超时5min不生效

    2024-04-01 00:08:04       57 阅读
  5. 微信程序 wx.request二次封装

    2024-04-01 00:08:04       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 00:08:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 00:08:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 00:08:04       82 阅读
  4. Python语言-面向对象

    2024-04-01 00:08:04       91 阅读

热门阅读

  1. 每日一题 --- 四数之和[力扣][Go]

    2024-04-01 00:08:04       44 阅读
  2. 解锁背包问题:C++实现指南

    2024-04-01 00:08:04       48 阅读
  3. 每日一题 第五十七期 洛谷 统计子矩阵

    2024-04-01 00:08:04       39 阅读
  4. macbook pro 2018 T2 芯片安装 archlinux 双系统

    2024-04-01 00:08:04       60 阅读
  5. 带头循环双向链表的实现

    2024-04-01 00:08:04       45 阅读
  6. 《堕落的审判》吵架台词

    2024-04-01 00:08:04       29 阅读
  7. 算法设计-杨辉三角

    2024-04-01 00:08:04       40 阅读
  8. 记 SpringBoot 使用@RequestBody 接收不到参数

    2024-04-01 00:08:04       34 阅读