微信小程序网络请求封装

这篇具有很好参考价值的文章主要介绍了微信小程序网络请求封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 概述

  • 网络请求地址放到url.js中,分别制定开发环境,体验环境,线上环境
  • 网络请求的方法放到request.js中,暴露get、post、wxLogin方法
  • 请求前显示加载中,请求结束后隐藏加载中
  • 请求的接口方法,放到api.js中,并调用request.js中对应的方法

二 请求方法封装

2.1 请求地址(url.js)

module.exports = {
  //开发环境
  develop: {
    BASE_URL: "http://localhost:3000/", //本地
  },
  //体检环境
  trial: {
    BASE_URL: "http://localhost:3000/", //体验版
  },
  //线上环境
  release: {
    BASE_URL: "http://localhost:3000/", //本地
  }
}

2.2 请求方法的封装(request.js) 

const { develop, trial, release } = require('./url.js');
// 不需要携带token
let urlList = [
  'xxx'
  'xxx'
]

/**
 * GET请求封装
 */
function get(url, data = {}) {
    return request(url, 'GET', data)
}

/**
 * POST请求封装
 */
function post(url, data = {}) {
    return request(url, 'POST', data)
}
//获取code
function wxLogin() {
    return new Promise((reslove) => {
        wx.login({
            success(res) {
                reslove(res.code);
            }
        })
    })
}

/**
 */
function request(url, method = "GET", data = {}, header = "application/x-www-form-urlencoded") {
    wx.showLoading({
        title: '努力加载中',
        mask: true
    })
    isShowLoading = true;
    //这里是判断不需要携带token
    if (urlList.indexOf(url) > -1) {
        header = {
            'Content-Type': header,
        }
    } else {
        header = {
            'Content-Type': header,
            'MINIAPP-TOKEN': wx.getStorageSync('token')
        }
        //console.log(wx.getStorageSync('token'))
    }
    return new Promise(function (resolve, reject) {
        wx.request({
            url: develop.BASE_URL + url,
            data: data,
            method: method,
            header: header,
            success: function (res) {
                if (res.statusCode == 200) {
                    if (res.data.result_code == 'due') {//token过期之后去首页自动登录
                        wx.clearStorage();
                        reject(res.data)
                        wx.reLaunch({
                            url: '/pages/login/login',
                            success: function () {
                                single.Disconnect()
                            }
                        })
                    } else if (res.data.result_code == 'error') {//同时登录强制下线
                        wx.clearStorage();
                        reject(res.data)
                        wx.reLaunch({
                            url: '/pages/login/login?state=' + res.data.msg,
                            success: function () {
                                single.Disconnect()
                            }
                        })

                    } else {
                        resolve(res.data);
                    }
                }

            },
            fail: function (err) {
                //服务器连接异常
                reject(err, "服务器连接异常,请检查网络再试")
                single.Disconnect()
            },
            complete: function (params) {
                if (isShowLoading) {
                    wx.hideLoading();
                    isShowLoading = false
                }
            }
        })
    })
}

module.exports = {
    request,
    get,
    post,
    wxLogin,
}

2.3 具体的请求方法(api.js)

import {
    get,
    post,
} from './request.js';

function getPhoneCode(data) {
    return get("getPhoneCode", data)
}
// 获取openid
function Login(data) {
    return post("Login", data);
}

module.exports = {
    getPhoneCode,
    Login
}

三 示例

import { wxLogin } from '../../utils/request';
import { Login } from '../../utils/api';
const app = getApp().globalData

onShow: function () {
let that = this;
that.getOpenid();
},
  // 获取open id
  async getOpenid() {
  try{
    const code = await wxLogin();
    console.log(code);
    let {openid} = await Login({
      appid: app.appid,
      code,
    })
    if (result_code == 'success') {
      app.unionid = unionid
      app.openid = openid
    }
   } catch (error) {
      console.log(error);
    }

  },

文章来源地址https://www.toymoban.com/news/detail-605788.html

到了这里,关于微信小程序网络请求封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp微信小程序封装网络请求 @escook/request-miniprogram

    官网地址:https://www.npmjs.com/package/@escook/request-miniprogram 1、下载依赖 2、引入 把下面代码放到 main.js 3、发起请求 4、请求成功 可以看到请求成功了,并执行了登入成功的逻辑。 每次发起请求后,都要自己写if语句判断请求是否成功,非常麻烦。我们可以修改一下源码解决这个

    2024年02月10日
    浏览(47)
  • 微信小程序封装请求

    封装请求 解决的问题 很多页面中请求的 url 前半部分都是一样的,重复书写导致页面代码冗余复杂同时逻辑容易不清晰,所以采用单独将请求封装成一个文件(模块)使得这些问题得到解决。 前期基础知识 uni.request(wx.request) Promise 具体步骤 创建文件夹及文件 在根目录下

    2024年02月11日
    浏览(45)
  • 微信小程序 封装request请求

    创建 utils 文件夹后创建 api 文件夹创建 request.js 创建 index.js

    2024年02月15日
    浏览(50)
  • 微信小程序封装wx.request请求

    对微信小程序的印象我还停留在2年前刚入行的时候,那是还不懂什么是Promise,只知道小程序发请求有时候要在success回调中嵌套好多层(后来我才知道这叫 回调地狱 )。最近刚好有个小程序的项目交给我发开发,加上如今的我自认为对Promise掌握的还可以,所以这次也尝试着封

    2024年02月16日
    浏览(47)
  • 微信小程序 wx.request 请求封装

    1、添加一些统一的参数或者配置 2、加上默认的请求头和cookie(有就加,没有就为空) 3、将参数,即传入的url地址、请求头传入请求中 4、封装 post 和 get 请求,使代码使用更加方便,以维护

    2024年02月16日
    浏览(42)
  • 微信小程序HTTP请求封装,复习指南

    // 配置文件 const config = require(‘./config.js’) var app = getApp(); const host = config.httpServer; // 服务器baseUrl /** POST请求, URL:接口 postData:参数,json类型 doSuccess:成功的回调函数 doFail:失败的回调函数 */ function postData(url, postData, doSuccess, doFail) { wx.request({ //项目的真正接口,通过字

    2024年04月15日
    浏览(35)
  • uniapp 微信小程序请求拦截器 接口封装

    前言: 请求拦截器可以在我们需要传递请求头的时候使用,例如:token 也会在当token发生变化的时候给予响应,所以我们做好对应的判断即可 1.首先在根目录创建common文件夹, 在里面创建request.js文件并加入以下代码: 2,在common文件夹下接着新建一个example.js文件来当作接口

    2024年01月23日
    浏览(49)
  • 微信小程序中封装请求,使用Async await方法,将异步请求变为同步请求方法

    介绍 微信小程序中,很多 API 都是异步的,无法同步处理。可以使用高级封装,通过 async await 方法来同步处理。 方法 在小程序右上角的 详情 里选择 本地设置 , 勾选 ES6转ES5 ,如下所示: 由于 Async Await 是 ES7 语法,所以在小程序里勾选 es6 转 ES5 会报错: ReferenceError: regene

    2024年02月08日
    浏览(55)
  • uniapp 微信小程序 封装公共的请求js(api版本)

    一、新建api文件夹 在项目目录下创建api文件夹,内放files跟index.js文件夹,files文件夹内放每个页面对应的js请求接口 1、index.js 2、例如:login.js 二、config.js 三、main.js 四、页面使用

    2024年02月14日
    浏览(48)
  • 微信小程序封装request请求,包含请求拦截器,响应拦截器和请求重试功能

    在发送请求之前,先判断用户是否有token,没有就执行登陆请求,将token保存,然后再执行原来请求; 拥有token,就直接执行请求;但是用户的这个token可能是过期的,如果执行请求发现用户登陆过期,就统一返回40001,然后对40001的响应统一处理,执行登陆请求,再执行原来请

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包