微信小程序  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在一段文字中的光标处插入其他文字
Aug 26 Javascript
JavaScript中的prototype使用说明
Apr 13 Javascript
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
jquery实现的伪分页效果代码
Oct 29 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
Nov 03 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 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
一个查看session内容的函数
2006/10/09 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP之header函数详解
2021/03/02 PHP
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
详解Python3.1版本带来的核心变化
2015/04/07 Python
详解Python中的Cookie模块使用
2015/07/06 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
美国折扣网站:jClub
2017/08/07 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
JAVA招聘远程笔试题
2015/07/23 面试题
优秀本科生求职推荐信
2014/02/24 职场文书
销售顾问岗位职责
2014/02/25 职场文书
个人考核材料
2014/05/15 职场文书
四年级小学生评语
2014/12/26 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android