微信小程序  http请求封装详解及实例代码


Posted in Javascript onFebruary 15, 2017

微信小程序  http请求封装

示例代码

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

以上为小程序的基本http请求代码,实际代码中如果每次这样来写是比较繁琐的,那我们就来做一下封装。

那代码中我们比较关注什么?

1.请求的参数,访问的接口
2.GET/POST...请求方式
3.请求参数统一处理(比如:加密、设置公共参数...)
4.请求成功返回的数据(比如:解密、抽离逻辑层数据)
5.请求失败反馈

我们不关注什么?

1.请求url(一般固定的配置在某个地方)
2.根据不同的接口规则做不同的请求参数(比如:参数加密等)
...

让我们代码实操

network.js

var API_URL = 'http://localhost/loverule/api/api.php'

var requestHandler = {
  params:{},
  success: function(res){
    // success
  },
  fail: function() {
    // fail
  },
}

//GET请求
function GET(requestHandler) {
  request('GET',requestHandler)
}
//POST请求
function POST(requestHandler) {
  request('POST',requestHandler)
}

function request(method,requestHandler) {
  //注意:可以对params加密等处理
  var params = requestHandler.params;

  wx.request({
   url: API_URL,
   data: params,
   method: method, // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
   // header: {}, // 设置请求的 header
   success: function(res){
    //注意:可以对参数解密等处理
    requestHandler.success(res)
   },
   fail: function() {
    requestHandler.fail()
   },
   complete: function() {
    // complete
   }
  })
}

module.exports = {
 GET: GET,
 POST: POST
}

1.页面中调用(以GET请求为例)

//导入js
  var network = require("../../utils/network.js")

  //写入参数
  var params = new Object()
  params.api_name = "api_user_login"
  params.account = "hanqing"
  params.password = "123456"

  //发起请求
  network.GET(
  {
    params: params,
    success: function (res) {
     console.log(res)
     //拿到解密后的数据,进行代码逻辑

    },
    fail: function () {
     //失败后的逻辑

    },
  })

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript 字符编码规则
May 04 Javascript
HTML node相关的一些资料整理
Jan 01 Javascript
EXT中xtype的含义分析
Jan 07 Javascript
JavaScript中去掉数组中的重复值的实现方法
Aug 03 Javascript
ie下动态加态js文件的方法
Sep 13 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
Jan 04 Javascript
关于javascript模块加载技术的一些思考
Nov 28 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
bootstrap输入框组使用方法
Feb 07 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
html中通过JS获取JSON数据并加载的方法
Nov 30 Javascript
基于node.js实现爬虫的讲解
Feb 18 Javascript
DOM事件探秘篇
Feb 15 #Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 #Javascript
js实现滑动到页面底部自动加载更多功能
Feb 15 #Javascript
JS 实现随机验证码功能
Feb 15 #Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
Feb 15 #Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 #Javascript
javascript中apply/call和bind的使用
Feb 15 #Javascript
You might like
php MySQL与分页效率
2008/06/04 PHP
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
更正确的asp冒泡排序
2007/05/24 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python中的super用法详解
2015/05/28 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python实现统计代码行数的小工具
2019/09/19 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
电子商务专业个人的自我评价
2013/12/19 职场文书
酒店开业策划方案
2014/06/02 职场文书
医药销售自我评价200字
2014/09/11 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
三峡大坝导游词
2015/01/31 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang
tree shaking对打包体积优化及作用
2022/07/07 Java/Android