小程序网络数据请求详解(附:wx.request二次封装)

本文详细介绍了微信小程序中网络数据请求的限制,如何配置合法域名,GET和POST请求的示例,以及如何处理跨域问题和Ajax的使用。此外,还提供了wx.request的二次封装,以便于统一管理异步请求。
摘要由CSDN通过智能技术生成

一、小程序中网络数据请求的限制

image.png

image.png

二、配置 request 合法域名

image.png

三、发起GET 请求

wx.request({
  url: "https://www.escook.cn/api/get", //请求的接口地址,必须基于 https协议
  method: "GET", // 请求方法
  data: {
    // 发送到服务器的数据
    name: "zs",
    age: 18,
  },
  success: (res) => {
    // 请求成功之后的回调函数
    console.log(res);
  },
  fail: (error) => {
    // 请求失败的回调函数
    console.log(error);
  },
});

四、发起POST请求

wx.request({
  url: "https://www.escook.cn/api/post", //请求的接口地址,必须基于 https协议
  method: "POST", // 请求方法
  data: {
    // 发送到服务器的数据
    name: "zs",
    age: 18,
  },
  success: (res) => {
    // 请求成功之后的回调函数
    console.log(res);
  },
  fail: (error) => {
    // 请求失败的回调函数
    console.log(error);
  },
});

五、跳过 request 合法域名校验

image.png

image.png

六、关于跨域和 Ajax 的说明

image.png

八、wx.request二次封装

/**
 * 封装一个Promise风格的通用请求
 * option - 包含请求地址、请求方式、请求参数、请求头、是否加载、是否需要Token
 */
var app = getApp(); //引入全局app.js,我们可以在globalData中定义一些公用的数据,比如baseUrl、token
import Toast from "/@vant/weapp/toast/toast"; //引入vant插件,用于提示错误
export const request = function (options) {
  const method = (options.method || "GET").toUpperCase();
  const { url, data, header = {}, isToken = true, isLoading = true } = options;
  return new Promise((resolve, reject) => {
    if (isLoading) {
      wx.showLoading({
        title: "加载中...",
        mask: true,
      });
    }
    wx.request({
      url: app.globalData.baseUrl + url,
      method,
      // content-type 默认为 application/json 所以当方法不是GET方式需要转为JSON字符串
      data: method === "GET" ? data : JSON.stringify(data),
      // header这里根据业务情况自行选择需要还是不需要
      header: isToken
        ? { ...header, Authorization: "Bearer " + app.globalData.token }
        : header,
      success: (res) => {
        if (res.data.code === 0) {
          resolve(res);
        } else {
          Toast(res.data.msg);
          reject(res.data.msg);
        }
      },
      fail: (err) => {
        reject(err);
      },
      complete: () => {
        if (isLoading) {
          wx.hideLoading();
        }
      },
    });
  });
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值