亚洲青青视频一区|8MAV在线观看|天天看AV天天看|中日成人手机在线|欧美激情五区六区|亚洲婷婷天堂级片|亚洲天堂网7777|欧美日韩其他另类|手机在线成人AV|成人性大片一区二区三区四区五区

284292114@qq.com 中國(guó)站
新聞中心 網(wǎng)絡(luò)推廣 網(wǎng)站建設(shè) 優(yōu)化推廣 首頁(yè)>新聞中心>優(yōu)化推廣>建網(wǎng)站

PbootCMS小程序API的封裝步驟教程

時(shí)間:2019-08-21   訪問量:0

程序員應(yīng)該具備的美德是“懶”,能用一行代碼搞定的,盡量不用兩行。

所以,剛開始研究PbootCMS制作小程序的時(shí)候,弟一個(gè)想法就是封裝接口。


文件下載地址:

PbootCMS小程序接口封裝.zip


下面是封裝步驟(封裝文件在文章醉后提供下載,供大家參考)。


1、準(zhǔn)備md5加密文件。

因?yàn)?a style="box-sizing: border-box; color: rgb(33, 37, 41); text-decoration-line: none; background-color: transparent;">PbootCMS的簽名參數(shù)signature是經(jīng)過雙層md5加密的,當(dāng)然如果后臺(tái)WebAPI沒有開啟強(qiáng)制認(rèn)證的,這一步可以跳過。


2、封裝一下API的請(qǐng)求方法。

//聲明一個(gè)請(qǐng)求函數(shù)
function api_request(url, method, parm){
    
  var apiurl    = '******';  //域名 + api.php
  var appid     = '******';    //后臺(tái)WebAPI中設(shè)置的API認(rèn)證用戶
  var appsecret = '******';    //后臺(tái)WebAPI中設(shè)置的API認(rèn)證密鑰
  
  var timestamp = Date.parse(new Date());
      timestamp = timestamp / 1000;    //獲取當(dāng)前時(shí)間戳
     
  var signature = md5.hex_md5(md5.hex_md5(appid + appsecret + timestamp));    //構(gòu)建signature

  var data = {    //因?yàn)樗阉?、留言和表單需要用到POST方法,要通過data傳遞參數(shù),所以先聲明data對(duì)象,方便后面添加
     appid: appid,
     timestamp: timestamp,
     signature: signature,
  };

  //根據(jù)請(qǐng)求方法構(gòu)建Header
  if (method == 'POST') {
    //POST方法,設(shè)置請(qǐng)求頭部
    var header = { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' };

    //添加POST參數(shù)到data
    for (var i in parm) {
       data[i] = parm[i];
    }
  } else {
    //GET方法,設(shè)置請(qǐng)求頭部
    method = 'GET';
    var header = { 'Content-Type': 'application/json' };
  }

  //通過promise返回?cái)?shù)據(jù)
  var promise = new Promise(function(resolve,reject){
        
    //小程序自帶的wx.request請(qǐng)求
    wx.request({

      method: method,
      url: apiurl + url,
      header: header,
      data: data,
            
      //請(qǐng)求成功
      success: function(res){
                
        var api_data = res.data;

        if (api_data.code != 1 && api_data.code != 0){

          reject({ error: '數(shù)據(jù)請(qǐng)求失敗,請(qǐng)稍后重試', code: 500 });
          return;

        } else {

          resolve(api_data);
        
        }
      
      } 

    })

  })
    
    //返回?cái)?shù)據(jù)
  return promise;

}


3、封裝API模塊

//這里就比較簡(jiǎn)單了,就是構(gòu)建api的url,然后傳入到api_request這個(gè)請(qǐng)求函數(shù),返回?cái)?shù)據(jù)。
//下面是根據(jù)官方文檔中的api封裝的各個(gè)模塊,有些沒有實(shí)際測(cè)試檢查,可能有手誤什么的,大家自行調(diào)整即可。

//Api模塊
module.exports = {

  //獲取公司信息
  companyinfos: function(){
    var url = '/cms/company';
    return api_request(url);
  },

  //獲取單個(gè)公司信息
  companyinfo: function(name){
    var url = '/cms/company/name/' + name;
    return api_request(url);
  },

  //獲取網(wǎng)站信息
  siteinfos: function(){
    var url = '/cms/site';
    return api_request(url);
  },

  //獲取單個(gè)網(wǎng)站信息
  siteinfo: function(name){
    var url = '/cms/site/name/' + name;
    return api_request(name);
  },

  //獲取自定義標(biāo)簽
  get_labels: function(){
    var url = '/cms/label';
    return api_request(url);
  },

  //獲取單個(gè)自定義標(biāo)簽
  get_label: function(){
    var url = '/cms/label/name/' + name;
    return api_request(url);
  },

  //獲取幻燈片
  get_slide: function(gid,num){
    var url = '/cms/slide/gid/' + gid + '/num/' + num;
    return api_request(url);
  },

  //獲取友情鏈接
  get_links: function(gid,num){
    var url = '/cms/link/gid/' + gid + '/num/' + num;
    return api_request(url);
  },

  //獲取欄目列表
  get_navs: function(){
    var url = '/cms/nav';
    return api_request(url);
  },

  //獲取指定欄目列表
  get_nav: function(scode){
    var url = '/cms/nav/scode/' + scode;
    return api_request(url);
  },

  //獲取當(dāng)前欄目
  get_current_cat: function(scode){
    var url = '/cms/sort/scode/' + scode;
    return api_request(url);
  },

  //獲取內(nèi)容列表
  get_list: function(scode,num,order){
    if( ( num != '' ) && !order ){
      var url = '/list/' + scode + '/num/' + num;
    } else if( !num && ( order != '' ) ){
      var url = '/list/' + scode + '/order/' + order;
    } else if ( (num != '') && (order != '') ){
      var url = '/list/' + scode + '/num/' + num + '/order/' + order;
    } else {
      var url = '/list/' + scode;
    }
    return api_request(url);
  },

  //獲取內(nèi)容列表第*頁(yè)
  get_list_paged: function (scode, paged, num, order) {
    if ((num != '') && (order == '')) {
      var url = '/list/' + scode + '/num/' + num + '/page/' + paged;
    } else if ((num == '') && (order != '')) {
      var url = '/list/' + scode + '/order/' + order + '/page/' + paged;
    } else if ((num != '') && (order != '')) {
      var url = '/list/' + scode + '/num/' + num + '/order/' + order + '/page/' + paged;
    } else {
      var url = '/list/' + scode + '/page/' + paged;
    }
    return api_request(url);
  },

  //獲取指定內(nèi)容
  get_content: function(id){
    var url = '/content/' + id;
    return api_request(url);
  },

  //獲取指定內(nèi)容多圖
  get_content_pics: function(id){
    var url = '/cms/pics/id/' + id;
    return api_request(url);
  },

  //獲取搜索結(jié)果
  get_search_resault: function(parm,num,order){ 
    if ((num != '') && (order == '')) {
      var url = '/cms/search/' + 'num/' + num;
    } else if ((num == '') && (order != '')) {
      var url = '/cms/search/' + 'oder/' + order;
    } else if ((num != '') && (order != '')) {
      var url = '/cms/search/num/' + num + '/order/' + order;
    } else {
      var url = '/cms/search/';
    }
    return api_request(url, 'POST', parm);
  },

  //提交留言
  add_message: function(parm){
    var url = '/cms/addmsg';
    return api_request(url, 'POST', parm);
  },

  //獲取留言內(nèi)容
  get_message: function(num){
    var url = '/cms/msg/num/' + num;
    return api_request(url);
  },

  //獲取留言內(nèi)容第*頁(yè)
  get_message_paged: function(num,paged){
    var url = '/cms/msg/num/' + num + '/page/' + paged;
    return api_request(url);
  },

  //提交表單
  add_form: function(fcode,parm){
    var url = '/cms/addform/fcode/' + fcode;
    return api_request(url, 'POST', parm);
  },

  //獲取表單內(nèi)容
  get_form: function(fcode){
    var url = '/cms/form/fcode/' + fcode;
    return api_request(url);
  },

  //獲取表單內(nèi)容第*頁(yè)
  get_form_paged: function(fcode,num,paged){
    var url = '/cms/form/fcode/' + fcode + '/num/' + num + '/page/' + paged;
    return api_request(url);
  },

}


4、完成了,就這么簡(jiǎn)單。


下面說明一下調(diào)用的方法:


1、在需要調(diào)用數(shù)據(jù)的js頁(yè)面引入api文件,例如手頁(yè)的index.js

const api = require('../../utils/api.js');  //路徑根據(jù)自己的實(shí)際情況調(diào)整


2、在生命周期函數(shù)--監(jiān)聽頁(yè)面加載函數(shù)中使用api模塊。

/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
*/
onLoad: function (options) {
    
    var that = this;  //劃重點(diǎn),這句千萬不要忘掉了。

    //api.模塊函數(shù).then...來調(diào)用,這里companyinfos()是調(diào)用公司信息
    api.companyinfos().then(function (rs) {
      //通過setData把獲取到的數(shù)據(jù)賦值到頁(yè)面初始數(shù)據(jù)的data對(duì)象,這樣就可以在wxml中使用數(shù)據(jù)了。
      that.setData({
        companyinfos: rs.data,
      })
      //把獲取的數(shù)據(jù)輸出到控制臺(tái)看看,實(shí)際使用的時(shí)候刪除掉下面這行
      console.log(rs.data);
    })
    
  },


3、控制臺(tái)截圖,可以看到公司信息的數(shù)據(jù)獲取成功,接下來就是綁定數(shù)據(jù)到頁(yè)面的事情了。

001.jpg


4、POST請(qǐng)求的使用方法。同樣在生命周期函數(shù)--監(jiān)聽頁(yè)面加載函數(shù)中使用api模塊。

//手先聲明一個(gè)對(duì)象,用來存儲(chǔ)需要通過POST傳遞過去的參數(shù)。比如搜索的keyword,scode,留言的字段等。

//這里演示的是搜索模塊,聲明對(duì)象,POST搜索的關(guān)鍵詞和指定分類。
var search_obj = {
    'keyword': '模板',
    'scode': '3,5',
};

//get_search_resault需要傳入 搜索對(duì)象(也就是剛才聲明的),返回條數(shù),排序方式。
//這里演示需要獲取的是分類3和5中的,關(guān)鍵詞是模板的5條信息。
api.get_search_resault(search_obj, 5, 'id').then(function (rs) { 
    that.setData({
      search: rs.data,
    })
    console.log(rs.data);
})


5、看看控制臺(tái)的截圖。

002.jpg

可以看到,已經(jīng)獲取到分類3和分類5中的,關(guān)鍵詞是“模板”,并且按照id進(jìn)行排序的前5條數(shù)據(jù)了。


服務(wù)咨詢
1對(duì)1咨詢,專業(yè)客服為您解疑答惑
聯(lián)系銷售
15899750475
在線咨詢
聯(lián)系在線客服,為您解答所有的疑問
ARE YOU INTERESTED IN ?
感興趣嗎?

有關(guān)我們服務(wù)的更多信息,請(qǐng)聯(lián)系項(xiàng)目經(jīng)理

15899750475 楊先生