基于小程序的网络请求框架

保姆级教程:用Python脚本一键把选股结果导入通达信自选股(附完整代码) 本文提供了一份详细的Python自动化教程,教你如何将选股结果一键导入通达信自选股。通过解析通达信文件结构、编写Python脚本实现股票代码转换和批量导入,大幅提升量化交易效率。教程包含完整代码示例,特别适合使用通达信(TDX)的投资者和量化交易开发者。 阅读详情

封装网络请求类

/**
 * 网络请求类
 *
 * @author zhanghaohao  
 * @date 2019-6-19
 */

const statusCode_success = '200'; //开发者服务器返回的 HTTP 成功状态码
const CODE_SUCCESS = '0'; //接口请求成功的CODE
const CODE_TOKEN_TIMEOUT = '50001'; //用户token过期CODE
const config = require('../config.js');
const ModalUtil = require('../utils/ModalUtil.js');
const ToastUtil = require('../utils/ToastUtil.js');
const util = require('../utils/util.js');

// //请求返回体模型
const httpModel = {
  code: 0,
  message: '',
  object: {}
}

/**
 * 拦截器
 */
function requestInterceptor(reqParams) {
  //做请求前的拦截处理

  return reqParams;
}

/**
 * 失败返回统一处理
 */
function handleFailResponse(message) {
  wx.showToast({
    title: message,
    icon: 'loading',
    duration: 2000
  })
}

/**
 * 打印请求地址
 */
function logRequestUrl(reqParams) {
  //显示请求路径
  var url = '请求路径: ' + config.API_SERVICE + reqParams.url;
  var paramCount = objCount(reqParams.params);
  if (paramCount > 0) {
    url += '?';
  }
  var i = 0;
  for (var item in reqParams.params) { //用javascript的for/in循环遍历对象的属性 
    if (i != (paramCount - 1)) { //不是最后一个才加上&
      url += item + "=" + reqParams.params[item] + '&';
    } else {
      url += item + "=" + reqParams.params[item];
    }

    i++;
  }
  console.log(url);
}

/**
 * 获取对象、数组的长度、元素个数
 * 
 * @param obj 要计算长度的元素,可以为object、array、string
 */
function objCount(obj) {
  var objType = typeof obj;
  if (objType == "string") {
    return obj.length;
  } else if (objType == "object") {
    var objLen = 0;
    for (var i in obj) {
      objLen++;
    }
    return objLen;
  }
  return false;
}

function wxPromise(method, reqParams) {
  
  //返回一个Promise对象
  return new Promise(function(resolve, reject) {
    //打印请求地址
    // logRequestUrl(reqParams);
    //判断是否需要显示loading
    var isLoading = false;
    if (reqParams.loading != null && reqParams.loading != '') {
      isLoading = true;
      wx.showLoading({
        title: reqParams.loading,
      })
    }
    var ContentType = reqParams.ContentType;
    if (util.isNullValue(ContentType)) {
      ContentType = "application/json";
    }
    wx.request({
      url: config.API_SERVICE + reqParams.url,
      method: method,
      data: reqParams.params,
      //在header中统一封装报文头,这样不用每个接口都写一样的报文头定义的代码
      header: {
        "Content-Type": ContentType,
        "token": "token"
      },
      success: function(res) {
        //关闭loading
        if (isLoading)
          wx.hideLoading();

        //根据自己项目服务端定义的正确的返回码来进行
        if (res.data.errorCode == CODE_SUCCESS) {
          resolve(res.data.body);
        } else if (res.data.errorCode == CODE_TOKEN_TIMEOUT){
          //token失效
          wx.showModal({
            title: '提示',
            content: errMsg,
            confirmColor: '#118EDE',
            showCancel: false,
            success: function (res) {
              if (res.confirm) { }
            }
          });
        } else {
          var errMsg = res.data.message == null ? '异常' : res.data.message;
          //如果出现异常则弹出toast
          ToastUtil.showHintToast(errMsg);
          reject(res);
        }
      },
      fail: function(res) {
        console.log(res);
        //关闭loading
        if (isLoading)
          wx.hideLoading();
        ToastUtil.showHintToast('请求异常');
        reject(res);
      },
      complete: function(res) {
      },

    });
  });
}


function getRequest(reqParams) {
  reqParams = requestInterceptor(reqParams);
  return wxPromise("GET", reqParams);
}

function postRequest(reqParams) {
  reqParams = requestInterceptor(reqParams);
  return wxPromise("POST", reqParams);
}

module.exports = {
  postRequest: postRequest,
  getRequest: getRequest,
}

网络请求API类

/**
 * 网络请求API
 *
 * @author zhanghaohao  
 * @date 2019-6-20
 */
const HTTP = require('HTTP.js');

/**
 * 测试例子
 */
function test() {
  var reqParams = {
    loading: "获取中",
    url: '/demo/test/object',
    params: {
      "avatarUrl": '1111'
    },
    ContentType: "application/x-www-form-urlencoded"
  }
  
  return HTTP.postRequest(reqParams);
}

module.exports = {
  test: test,
}

在页面代码中只需要这样

 WXAPI.test().then(res => {
     console.log(res);
 });
华为防火墙 策略路由实现多ISP接入Internet PC3上网访问Server1时走ISP1。PC4上网访问Server1时走ISP2。1、配置接口IP并加入相应的安全区域。二、ISP2 运营商 R2路由器。一、ISP1 运营商 R1路由器。 阅读详情

相关推荐

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

微信小程序开发-网络请求

HTTP请求是客户端向服务器发送的请求消息,用于获取或操作服务器上的资源。微信小程序提供了一个名为wx.request的API函数,用于发起HTTPS网络请求。

二十多岁的你迷茫又着急,想要车子,想要房子,想要享受旅行,你那么浮躁,拿什么看透人生! 3448

一文掌握python图形界面开发PyQt6--(一)基本操作、控件、信号与槽、常用控件、布局管理、事件处理、文件对话框

一文掌握python图形界面开发PyQt6--(一)基本操作、控件、信号与槽、常用控件、布局管理、事件处理、文件对话框

qq_38120851的博客 4043

微信小程序之网络数据请求 wx:request的简单使用

我们可以在微信开发者工具中,临时开启「开发环境不校验请求域名、TLS 版本及 HTTPS 证书」选项,跳过 request 合法域名的校验。例如:请求黑马微信小程序课程的一个数据接口。出于安全性方面的考虑,小程序官方对。

m0_63622279的博客 7050

移远EC21/EC200模组休眠功耗从13mA降到6mA,我排查了这3个坑(附完整AT指令流程)

本文详细介绍了移远EC21/EC200模组休眠功耗从13mA优化至6mA的完整解决方案,涵盖硬件设计检查、AT指令配置、RTOS调度优化和固件兼容性验证等关键步骤。通过系统性的低功耗问题诊断框架,帮助IoT设备开发者有效提升电池续航能力,特别适合智能水表等电池供电场景应用。

weixin_30715523的博客 534

保姆级教程:将YOLOv8模型封装成Docker镜像,集成到CVAT实现自动标注

本文提供了一份详细的保姆级教程,指导如何将YOLOv8模型封装成Docker镜像并集成到CVAT平台,实现自动化标注。通过环境配置、模型服务化封装、Docker镜像构建与优化、CVAT平台集成等步骤,帮助开发者高效完成计算机视觉项目的自动标注工作流,显著提升标注效率。

weixin_28692817的博客 412

微信小程序开发实战 ⑩(网络请求设置)

微信小程序网络请求开 REQUEST ~ GET POST

m0_61490399的博客 6259

用ADS搞定CGH40010F的宽带连续F类功放:从阻抗计算到版图仿真的保姆级流程

本文详细介绍了使用ADS设计CGH40010F宽带连续F类功放的全流程,从阻抗计算到版图仿真。通过分析器件特性和理论基础,提供谐波阻抗匹配和版图协同验证的实用技巧,帮助射频工程师高效完成高效率功放设计。重点关注宽带连续F类功放的设计难点和调试方法,提升设计成功率。

weixin_29189377的博客 375

微信小程序开发系列(二十八)·小程序API如何发送网络请求以及网络请求失败后的解决方法

小程序开发框架提供丰富的微信原生API,可以方便的调起微信提供的能力,例如:获取用户信息、微信登录、微信支付等,小程序提供的API几乎都挂载在wx对象下,例如: wx.request(), wx.setStorage()等,wx对象实际上就是小程序的宿主环境微信所提供的全局对象。异步API支持 callback & Promise两种调用方式:① 当接口参数 Object 对象中不包含 success/fail/complete 时将默认返回 Promise。

时光の尘的博客 3271

REST-meta-MDD Data总结

sMRI数据使用:nwc1、nwc2、nwc3(同样数据集相关论坛中有相关信息指向需要使用wc1、wc2、wc3)多方咨询与讨论后决定使用nwc数据,这里说明wc数据相对wc数据要大的多如wc1的大小为1.33GB,而nwc1的数据却有6.90GB。VBM文件:/REST-meta-MDD/Sharing/REST-meta-MDD-VBM- phase1 -Sharing.tar.gz。1、Excel中的表型信息:1-男,2-女;-9999或空白表示缺少数据。

2404_88295660的博客 1532

Python爬虫实战(基础篇)—23—爬取微信小程序<随机目的地旅行>生成随机地址(附GUI版)

爬取微信小程序<随机目的地旅行>生成随机地址

weixin_42636075的博客 1228

小程序中的网络请求

小程序网络请求相关知识

m0_67198021的博客 1054

YOLOv8+SAM强强联合:用分割“喂“检测,复杂背景下作物AP从72%干到77.7%,杂草误检降60%

目标与背景高度相似:如农业(作物vs杂草)、工业(零件vs台面)、医学(病灶vs正常组织);遮挡严重的场景:如密集人群(人被遮挡)、森林(树木被枝叶遮挡);小目标密集场景:如无人机航拍(远处小目标易混背景)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 792

微信小程序 - 自封的网络请求框架

因我对于前端是个新手,所以网络框架是我同事封装的,在这里做个记录,部分知识点,我之后了解后会进行记录,以便大家学习 ~ 目录 创建 封装 使用 创建 创建一个存放网络框架的文件夹与.js文件,如下 封装 封装的网络框架 → service.js const API_BASE_URL = '请写入 → 这里是我们的服务器域名' const baserequest = (url, method...

Android、前端、小程序、后端 1154

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

对微信小程序网络请求框架的再次封装

微信小程序的网络请求框架已经设计得很简单易用了,它是这样发起网络请求的: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success (re...

shving的专栏 938

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

微信小程序开发学习笔记《18》uni-app框架-网络请求与轮播图

博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读。

tutgxu的博客 1298

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

微信小程序基本的开发框架抽取,包括网络请求的二次封装,页面状态管理,常见页面模板封装

微信小程序基本的开发框架抽取,包括网络请求的二次封装,页面状态管理,常见页面模板封装

未来很长,但我会努力的走下去。 3217

微信小程序uniapp框架使用网络请求

nuiapp配置网络请求: 由于平台的限制,小程序项目中不支持axios,而且原生的wx.request()API功能较为简单,不支持拦截器等全局定制的功能,因此,建议在uniapp项目中使用@escook/request-miniprogrom第三方包发起网络数据请求 下载依赖: npm install @escook/request-miniprogram //在main.js当中按需导入 $http 对象 import { $http } from '@escook/request-miniprogr

紫月i的博客 1755

uniapp封装网络请求_小程序入门(2)-简单网络框架封装

我们新建完项目后,比较棘手的问题:对项目架构的认知JS,wxss ,wxml网络请求今天主要讲一下 如何发起 HTTPS 网络请求 ,并做简单的封装。详解如何发起网络请求??官方文档已做了解释示例代码:官方文档中对参数,object.method ,object.dataType ,object.responseType,object.success 回调函数,都做了详细的说明。简单封装我们可以在...

weixin_39867296的博客 221

小程序-网络请求框架封装

baseHttp.jsconst localURL = 'http://testgame.dddrink.com:8080/youjiu';const wxRequest = (params, url) => { wx.request({ url: localURL + url, method: params.method || 'GET',

710

微信小程序框架封装登录,网络请求等公共模块及调用示例

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 这个公共模块封装了session的获取,和fromId发送,showToast成功和失败的弹窗。 微信小程序公共通用模块 const util = require('../utils/util.js'); function init() { var that = this; // sess...

a_靖的博客 2682

微信小程序开发框架搭建

使用开发工具的正确姿势微信提供的开发工具的编辑功能不是一般的水,写代码肯定不能用它,否则就是浪费生命.不说别的,连自动保存都没有,第一次写时写了一个多小时,后面下班直接关掉,也不弹出提示说没保存.然后第二天过来,写的代码全没了!!! 顿时感到巨坑无比.这些工具开发人员吃干饭的么??? (后来的版本已经修复不能自动保存的问题了,当然编辑功能还是不好用.)它的正确用法是作为运行和调试工具.那么适合作为

hss01248的专栏 3万+

微信小程序开发前端基础知识

微信小程序

虎康的博客 8860

微信小程序

微信开放者平台和微信公众号平台区别 开放平台: 是微信对外开放API接口的平台 开放的API接口,供第三方网站和App调用 后端程序员是开放平台开发的主力军 公众平台: 是基于微信公众号,为微信用户提供服务的平台 所有公众号,都属于微信内开发 前端程序员是公众平台开发的主力军 app 与 小程序之间的区别 开发原理不同 App:基于手机操作系统提供的API进行开发; 小程序:基于微信提供...

fengzitaba的博客 2032

taro小程序封装请求方法

最近需要开始写小程序,比较了uni-app与taro框架,听取了很多朋友的建议,最终还是选择使用taro。笔者之前使用过taro,因为不是自己搭建的总体框架,所以仅限业务开发。新开发的小程序将由笔者独立搭建总体框架,遇到的问题会不定时分享出来,以供诸君参考,也希望诸君不吝赐教!!! taro文档-网络请求 import Taro from '@tarojs/taro' // 错误定义 const HTTP_STATUS = { SUCCESS: 200, CREATED: 201, ACC.

V_AYA_V的博客 2116

微信小程序文档大纲 供参考

首先亮出微信小程序文档地址:https://developers.weixin.qq.com/miniprogram/dev/ 一、指南 1、起步 小程序简介: 小程序技术发展史 -- 将h5的js-sdk如何变成小程序的 小程序与普通网页开发的区别 体验小程序 ...

shengzhang_的博客 4242
上一篇: 网页画uml图
下一篇: 入职新公司三个月总结
豪豪6
博客等级 码龄14年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值