> 위챗 애플릿 > 미니 프로그램 개발 > 미니 프로그램 인터페이스 요청 캡슐화 예시에 대한 네트워크 전반의 소개

미니 프로그램 인터페이스 요청 캡슐화 예시에 대한 네트워크 전반의 소개

coldplay.xixi
풀어 주다: 2020-10-14 17:50:57
앞으로
2408명이 탐색했습니다.

미니 프로그램 개발 튜토리얼오늘은 전체 네트워크에 대한 미니 프로그램 인터페이스 요청 캡슐화의 모든 예를 소개하겠습니다. 와서 시청하세요.

미니 프로그램 인터페이스 요청 캡슐화 예시에 대한 네트워크 전반의 소개

이 글은 주로 초보자를 위한 글이라 부족한 점이 있다면 양해 부탁드립니다!

utils 폴더에 두 개의 새로운 js 파일을 만듭니다. 하나는 api.js이고 다른 하나는 requtil.js

api.js

이 파일은 기본 API 인터페이스입니다. 바로 코드로 넘어가겠습니다.

const request = require('requtil.js')/*Apis 把全部api都存在这里*/const Apis = { 
   /* 用户相关 */
  'login': '/devicecenter/auth/weChtLoin',  'bindUser': '/devicecenter/user/userBindinOpenId',  'genQrCode': '/devicecenter/user/getUserRcode',  
   /* 设备相关 */
  'getDeviceList': '/minipro/group/getDl', // 获取设备列表
  'getDeviceAdd': '/minipro/group/addDl', //  添加设备
  'getDeviceDtl': '/minipro/group/delDl', //  删除设备}/* 定义请求方法 */const user = {  login: function(data) {
    request.get(Apis.login, data)
  },  getSecret: function(data) {
    request.get(Apis.getSecret, data)
  },
}module.exports = {
  ...user
}复制代码
로그인 후 복사

requtil.js

WeChat의 wx.request 요청을 별도로 캡슐화합니다

const globalsetting = require('globalsetting.js')const baseURL = globalsetting.serverconst util = require('util.js')const ignoreUrls = [  '/auth/weChatLogin',  '/user/userBindingOpenId',  '/user/getSecret',  '/user/getOpenId']var token = ''function post(url, args) {
  args = _prev(url, 'POST', args)
  wx.request(args)
}function get(url, args) {
  args = _prev(url, 'GET', args)
  wx.request(args)
}function put(url, args) {
  args = _prev(url, 'PUT', args)
  wx.request(args)
}function _delete(url, args) {
  args = _prev(url, 'DELETE', args)
  wx.request(args)
}function _prev(url, method, args) {  // console.log('123',args)
  args = args || {}
  args.url = url  if(args.urlparam) 
    args.url += '/' + args.urlparam  var params = parseParams(args)
  params.method = method
  params.success = success(params.success)
  params.fail = fail(params.fail)
  setToken(params)  return params
}// 处理接口是否需要添加header.token方法function setToken(params) {  if (!ignoreUrls.some(url => params.url.match(new RegExp(url)))) {    if (!params.header)
      params.header = { token: getToken() }    else 
      params.header.token = getToken()
  } else {    // console.log('ignore: ', params.url)
  }
}// 处理接口参数方法function parseParams(args) {  var params = Object.assign(args)  if (!(params.url.startsWith('https://') || params.url.startsWith('http://')))
    params.url = baseURL + params.url  if(params.param) {    if (params.url.indexOf('?') > -1 && params.url.indexOf('?') != params.url.length - 1) {
      params.url += '&' 
    } else if(params.url.indexOf('?') == params.url.length -1) {      // 无任何操作
    } else {
      params.url += '?'
    }    var buf = ''
    for(var name in params.param) {      let val = params.param[name];
      buf += name + '=' + encodeURI(typeof val == 'object' ? JSON.stringify(val) : val) + '&'
    }
    params.url += buf
  }  return params
}// 接口返回成功方法function success(callback) {  return function(rs) {    var status = rs.statusCode    if (status == 405) {
      util.errorMsg('请求失败405:\n服务器返回失败')
    } else if(status == 404) {
      util.errorMsg('请求失败404:\n找不到接口')
    }    if(callback) callback(rs.data)
  }
}function fail(callback) {  return function(rs) {    console.log(rs)    if(callback) callback(rs)
  }
}// 获取接口请求回来的tokenfunction _setToken(tk) {
  token = tk
  wx.setStorageSync('token', token)
}复制代码
로그인 후 복사

페이지 호출 방법

전역 app.js에서

import api from './utils/apis.js';
App({    api: api,
})复制代码
로그인 후 복사

index 페이지

getApp()을 통해 API 인터페이스 가져오기 그리고 커스터마이징 함수에 Promise 메소드를 사용하여 데이터를 얻은 후, getDevList에서 getChatRecord 메소드를 호출하여 데이터를 할당합니다

const APP = getApp()
getDevList(e){  this.getChatRecord().then(res => {
    wx.hideLoading({      success: (res) => {},
    });    if(res.id == '-1') {
      utils.errorMsg(res.message);
    }else {      console.log(res)
    }
  })
}// 设备列表请求接口getChatRecord (params = {}) {  return new Promise((resolve, reject) => {
    APP.api.getDeviceList({      success: res => {
        resolve(res)
      }
    })
  })
},复制代码
로그인 후 복사

나중에 데모로 만들어서 github에 올려서 좀 더 직관적으로 보실 수 있도록 하겠습니다

관련 무료 학습 추천: Mini 프로그램 개발 튜토리얼

위 내용은 미니 프로그램 인터페이스 요청 캡슐화 예시에 대한 네트워크 전반의 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.im
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿