微信小程序  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的变量和数据类型
Jun 03 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
Aug 20 Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 Javascript
详解Vue-基本标签和自定义控件
Mar 24 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
vue基于两个计算属性实现选中和全选功能示例
Feb 08 Javascript
vue使用swiper实现中间大两边小的轮播图效果
Nov 24 Javascript
JS控制下拉列表左右选择实例代码
May 08 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 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正则表达式(regar expression)
2011/09/10 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
详解javascript函数的参数
2015/11/10 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
浅谈js的异步执行
2016/10/18 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
shiro授权的实现原理
2017/09/21 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python 自定义装饰器实例详解
2019/07/20 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
yy结婚证婚词
2014/01/10 职场文书
节约能源标语
2014/06/17 职场文书
个人党性分析材料
2014/12/19 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
小学教师见习总结
2015/06/23 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
go goroutine 怎样进行错误处理
2021/07/16 Golang
欧元符号 €
2022/02/17 杂记