欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

小程序数据请求1.0

程序员文章站 2022-04-09 17:08:49
request属性请求示例1请求示例2属性属性名类型默认值介绍urlstring接口地址datastring/object/ArrayBuffer参数headerObject设置请求的 header,header 中不能设置 Referer。content-type 默认为 application/jsontimeoutnumber超时时间,单位为毫秒methodstringGET请求方法dataTypestring...

属性

属性名 类型 默认值 介绍
url string 接口地址
data string/object/ArrayBuffer 参数
header Object 设置请求的 header,header 中不能设置 Referer。content-type 默认为 application/json
timeout number 超时时间,单位为毫秒
method string GET 请求方法
dataType string json 返回的数据格式
responseType string text 响应的数据类型
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

请求示例1

wx.request({
  url: 'test.php', //仅为示例,并非真实的接口地址
  data: {
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 默认值,可不填
  },
  success (res) {
    console.log(res.data)
  }
})

其他未出现是属性都是 非必填 的值

请求示例2(封装)

// 统一的请求接口
const baseUrl = 'https://lpc.0791jr.com/api';
//简化请求接口
const getUrl = (url) => {
  if (url.indexOf('://') == -1) {
    url = baseUrl + url;
  }
  return url
}

const http = ({
  url = '',
  param = {},
  ...other
} = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: getUrl(url),
      data: param,
      header: {
        "content-type": "application/x-www-form-urlencoded;charset=UTF-8"
      },
      ...other,
      complete: (res) => {
        
          resolve(res.data)
        } else { //请求失败
         
          reject(res.data)
        }
      }
    })
  })
}



// get方法
const _get = (url, param = {}) => {
  return http({
    url,
    param
  })
}

const _post = (url, param = {}) => {
  return http({
    url,
    param,
    method: 'POST' //其实可以不用大写
  })
}

const _put = (url, param = {}) => {
  return http({
    url,
    param,
    method: 'PUT'
  })
}

const _delete = (url, param = {}) => {
  return http({
    url,
    param,
    method: 'DELETE'
  })
}
module.exports = {
  baseUrl,
  get: _get,
  post: _post,
  put: _put,
  delete: _delete
}

解析

const http = ({
  url = '',
  param = {},
  ...other
} = {}) => {}

这段代码一开始可能会看不太懂,下面举个例子

1.了解解构规则

解构赋值的规则是,若等号右边的值不是对象或者数组,就会先将其转化成对象。由于undefined和null无法转化成对象,所以对其进行解构赋值时会报错。

function text(a,b,{c,d}){
    // ...
}
text(1,2,{});
text(1,2)//报错:Uncaught TypeError: Cannot destructure property `c` of 'undefined' or 'null'

// 等同于
function text2(a, b, options) {
    let { c,d } = options;
}

text2(1,2); //options没传值导致异常报错:Uncaught TypeError: Cannot destructure property `c` of 'undefined' or 'null'

2. 可改为如下

function text(a,b,{c,d}={}){
    // ...
}
function text2(a, b, { c,d } = {}) {
    // ...
}
let obj = {1,2}
text(1,2)  //未报错
text(1,2,obj) 
//原理解析: 先判断text函数第三个参数有没有传值,未传值则 默认赋值{c,d} = {};若传进来了obj,则{c,d} = obj

也就是说 text(a, b, {c,d}={}){//…} 中的{c,d}={}中的 等号是默认赋值的等号,不是解构赋值的等号

3. 所以

const http = ({
  url = '',
  param = {},
  ...other
} = {}) => {}

是先看有没有传值
1.若未传值 那么进行默认赋值,在解构

http()
/* ================ */
{
  url = '',
  param = {},
  ...other
} = {}
  1. 若传值, 对传的值解构
let obj = {
	url:1,
	param: 2
}

http(obj);
/* ================ */
{
  url = '',
  param = {},
  ...other
} = obj

本文地址:https://blog.csdn.net/weixin_48263393/article/details/109226362