1.2.1 • Published 5 years ago

wx-mini-program-request v1.2.1

Weekly downloads
4
License
ISC
Repository
github
Last release
5 years ago

Request

封装微信请求

安装

npm install wx-mini-program-request

使用

// app.js

import Request from 'wx-mini-program-request'

Request.setBaseUrl('https://www.xxx.com/api/'); // 设置你的服务器接口地址

// 其他页面

// get 请求
Request.get('api1',{id:1}).then(res=>{

});

Request.post(...)

Request.request(...)

内置属性

内置属性被设置了访问器属性,类型已固定

属性类型修改方法说明
BASE_URLStringsetBaseUrl请求url的前缀,若地址不是http开头的,都会加上此前缀
BEFORE_REQUESTFunctionbeforeRequest请求前的回调,请求发送前会被此函数拦截,可在回调内对请求做处理,详见方法 beforeRequest
AFTER_REQUESTFunctionafterRequest请求完成后的回调,请求得到响应后会被此函数拦截,可在回调内对响应做处理,详见方法 afterRequest

方法

setBaseUrl(url)

@param   {String}    url   要设置的url

request(url,type,data)

 @param   {String}        url=''      请求的地址
 @param   {'get'|'post'}  type='get'     请求方式
 @param   {Object}        data={}   请求的参数

 @return  {Promise}

get(url,data)

 @param   {String}        url=''      请求的地址
 @param   {Object}        data={}   请求的参数

 @return  {Promise}
 
 等同于request(url,'get',data)

post(url,data)

 @param   {String}        url=''      请求的地址
 @param   {Object}        data={}   请求的参数

 @return  {Promise}
 
 等同于request(url,'post',data)

beforeRequest(callback)

@param {Function} callback - 请求前回调

设置一个唯一的请求前回调,当发送一个新的请求时,请求参数会被传入此回调函数,如果回调函数返回值是Object,会覆盖原有的参数作为请求体,如果回调函数是Promise,会在该then后发送请求并使用then回调的参数作为请求体;

回调函数接收一个参数,为请求参数

afterRequest(callback)

@param {Function} callback - 请求前回调

设置一个唯一的请求完成后回调,当请求得到响应时,响应内容会被传入此回调函数,如果回调函数返回值是Object,会覆盖原有的参数作为响应参数,如果回调函数是Promise,会在该then后发送请求并使用then回调的参数作为响应参数;

回调函数接收两个个参数,第一个参数为响应内容,第二个为请求数据,包含url(请求地址),type(请求类型),params(请求参数)

示例

需求:

使用Request时:

1 如果请求体包含_loading:true,那么在请求前,展示loading,响应后关闭loading;实际请求参数不包含_loading字段

2 如果请求体包含_user:true,那么在请求参数中加入User的用户数据中的user_id和token(用户数据是异步获得的);实际请求参数不包含_user字段

3 若服务器响应的内容不是JSON数据,作请求失败处理

4 若服务器响应的JSON数据中status不为1,作请求失败处理

5 若服务器响应成功,将响应JSON内容的data做响应结果

import Request from 'wx-mini-program-request'
import User from 'wx-mini-program-user'
(() => {

   /*设置接口地址*/
   Request.setBaseUrl(API_URL)

   /*设置请求前回调*/
   Request.beforeRequest(params => {

      /*是否使用 loading*/
      if (params._loading === true) {
         delete params._loading
         wx.showNavigationBarLoading();
      }

      /*是否要携带用户数据*/
      if (params._user === true){
         delete params._user;
         return new Promise(resolve =>
            User.getUserInfo().then(({user_id,user_token})=>
               resolve(Object.assign({user_id,user_token},params))))
      }

   });

   /*设置请求完成回调*/
   Request.afterRequest(response => {
      return new Promise((resolve, reject) => {
         /*关闭 navbar loading*/
         wx.hideNavigationBarLoading();

         let {statusCode, data} = response;
         /*响应码为200 状态码为1 才算请求成功*/
         if (
            statusCode === 200 &&
            typeof data === 'object' &&
            data.status === 1
         )
            resolve(data.data)
         /*否则报错*/
         else {
            console.error(typeof data === 'object' ? data.msg : '服务器错误!');
            reject();
         }
      })
   });

})();
1.2.1

5 years ago

1.2.0

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago