微信小程序  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 相关文章推荐
js 覆盖和重载 函数
Sep 25 Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
JavaScript对象和字串之间的转换实例探讨
Apr 21 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
Vue精简版风格概述
Jan 30 Javascript
JS基于对象的链表实现与使用方法示例
Jan 31 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 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的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
python基于ID3思想的决策树
2018/01/03 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
python 文件转成16进制数组的实例
2018/07/09 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
采购部岗位职责
2013/11/24 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
扬尘污染防治方案
2014/06/15 职场文书
个人自查自纠材料
2014/10/14 职场文书
自我推荐信格式模板
2015/03/24 职场文书
PHP命令行与定时任务
2021/04/01 PHP
浅谈golang 中time.After释放的问题
2021/05/05 Golang
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS