IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序 request 函数封装 -> 正文阅读

[移动开发]微信小程序 request 函数封装

在同一个文件夹下面

封装一个 http.js (功能) 和 config.js(配置) 文件

http.js?

 import config from "../utils/config.js"  //引用config

 class Http{
  request({url , data = {} , method = "GET", auth = true}){
    let header = {}
    let token = wx.getStorageSync(config.TOKEN_NAME)

    // 判断
    if(auth){
      if(!token){
        let that = this
        return this.login().then(res=>{
          if(res.code==200){
            wx.setStorageSync(config.TOKEN_NAME, res.data.token)
            wx.setStorageSync(config.TOKEN_EXPIRE, res.data.expire)
            return that.wxlogin().then(ret=>{
              if(ret.code==200){
                wx.setStorageSync(config.OPENID_NAME, ret.data.openid);
                data.openid = ret.data.openid
                return that.request({
                  url,data,method
                })
              }
          })
          }
        })
      }
    }

    header.Authorization = 'Bearer ' + token

    return new Promise(function(resolve,reject){
      wx.request({
        url: `${config.DOMATN}/api/${url}`, //这里 config.DOMATN是域名 ,后面接上 自定义路由
        data:data,
        header:header,
        method:method,
        success:res=>{
          resolve(res.data)
        },fail:ret=>{
          reject(ret.data)
          //提示 并记录日志
          wx.showToast({
            title: '系统错误,请稍后再试',
          })
        }
      })
    })
  }

  //登录 获取token
  login(){
   return this.request({
      url:"login",
      auth:false,
      data:{
        username:'admin',
        password:'123456',
      },
      method:'post',
    })
  }

  //用 code 交换 openid
  wxlogin(){
    let that = this
    return new Promise(function(resolve,reject){
      wx.login({
        timeout: 2000,
        success:res=>{
          that.request({
            url:'v1/wxlogin',
            method:'post',
            data:{code:res.code}
          }).then(res=>{
            resolve(res);
          })
        }
      })
    })
  }

}

export {
  Http
}

2.config.js

export default {
  DOMATN : "域名地址",
  TOKEN_NAME : "token", //保存token 名称
  TOKEN_EXPIRE : "expire", //过期时间
  OPENID_NAME : "openid", // openid
}

3. 如何在页面引入 (在页面的js 文件中)

import {Http} from "../../utils/Http.js";

let http = new Http;

4.这里登录生成jwt 参考

laravel8 利用passport 登录和 jwt (生成token)_guanj0623的博客-CSDN博客

5.使用code 换 openid? (自己使用的是PHP方法)

public function wxlogin(Request $request)
    {
        //微信开发助手提供的
        $appid = "wx6f45f6ff1ca6c025";
        $secret = "5ebd7560baa543f1dca5188fb9630a6c";
        //接收传来的code
        $code = $request->post('code');
        //请求地址 换取openid 和 session_key
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";
        $userInfo = json_decode(file_get_contents($url),true);
        //根据获取的openid 查询数据 存在的话就更新session_key
        $model = Renting::where('openid',$userInfo['openid'])->first();
        if ($model){
            $model->session_key = $userInfo['session_key'];
            $model->save();
        }else{
            //不存在 将数据入库
            Renting::create($userInfo);
        }
        return ['code'=>200,'msg'=>'success','data'=>$userInfo];
    }

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:26:00  更:2021-11-29 16:26:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:16:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码