当前位置: 首页 > news >正文

微信小程序之----接口调用方式

最近开发了一个微信小程序版的任务管理系统,在向Java后台发送接口时遇到了一些问题,在这里做一个简单的总结。

官方接口

官方给出的接口叫做wx.request,请求方式比较简单,下面是官网给出的请求实例。

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

存在的问题

  • wx.request请求的header中content-type默认为application/json,如果我们想换种方式比如用"application/x-www-form-urlencoded"会发现在请求头信息中并没有取代默认的application/json而是新增了这种方式,另外在用jquery.ajax请求时即便同样使用application/json方式来请求,得到的数据格式也不相同,无论用什么请求方式ajax都会将请求数据转换为&name1=value1&name2=value2的形式,这样在根据content-type来解析请求数据时就会出现问题,不知道微信是有意这样做还是它根本就是个bug。总之是给我带来了不必要的麻烦。
  • 微信小程序发送的是https请求,在本地调试时可以用http,如果放在手机上测试时校验请求方式和域名,不合法会报以下错误:

  • 为了方便请求,可以对wx.request做一个简单的封装,这样我们再调用的时候就方便了许多,代码如下:
var app = getApp();
function request(url,postData,doSuccess,doFail,doComplete){
      var host = getApp().conf.host;
      wx.request({
        url: host+url,
        data:postData,
        method: 'POST', 
        success: function(res){
          if(typeof doSuccess == "function"){
              doSuccess(res);
          }
        },
        fail: function() {
          if(typeof doFail == "function"){
              doFail();
          }
        },
        complete: function() {
          if(typeof doComplete == "function"){
              doComplete();
          }
        }
      });
  }
}

module.exports.request = request;
  • 如果一个接口在不同地方频繁用到,原本设想写一个函数,然后将函数暴露供其他js调用,但后来发现wx.request中设置async是无效的,只能发异步请求,所以如果想写一个函数来返回调用接口得到的数据就比较难实现。

来源:https://www.cnblogs.com/liululin/p/6082568.html

转载于:https://www.cnblogs.com/dekevin/p/10226723.html

相关文章:

  • django 的后台管理
  • Vue 目录
  • 蒟蒻的作文
  • PLC之六部十层电梯整体框架
  • js实现数组去重的几种方法
  • MapReduce编程:词频统计
  • Python基础之文件
  • 使用vuepress搭建文档管理/博客
  • 什么是分布式系统,如何学习分布式系统
  • Dynamics CRM - 如何解决 Microsoft Dynamics CRM has encountered an error 弹窗的问题
  • python队列Queue
  • [转]让Linux进入虚拟机 Virtualenv
  • C++学习二十C++中函数重载的理解
  • vuex存储和本地存储(localstorage、sessionstorage)的区别
  • Ubuntu下postgresql安装及常见错误处理
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CentOS6 编译安装 redis-3.2.3
  • CSS中外联样式表代表的含义
  • Mithril.js 入门介绍
  • Spring Boot MyBatis配置多种数据库
  • yii2权限控制rbac之rule详细讲解
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 好的网址,关于.net 4.0 ,vs 2010
  • 开源SQL-on-Hadoop系统一览
  • 理清楚Vue的结构
  • Linux权限管理(week1_day5)--技术流ken
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 数据可视化之下发图实践
  • 组复制官方翻译九、Group Replication Technical Details
  • #include<初见C语言之指针(5)>
  • #NOIP 2014# day.1 T2 联合权值
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • .bat文件调用java类的main方法
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET处理HTTP请求
  • .Net语言中的StringBuilder:入门到精通
  • .net专家(张羿专栏)
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @RunWith注解作用
  • [145] 二叉树的后序遍历 js
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [FC][常见Mapper IRQ研究]
  • [IE编程] IE中对网页进行截图的编程接口
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [javaSE] GUI(事件监听机制)
  • [json]定义、读写
  • [LeetCode 687]最长同值路径