<li id="u9fd8"><object id="u9fd8"><u id="u9fd8"></u></object></li>

  • <em id="u9fd8"><tr id="u9fd8"></tr></em>
    1. 全部 71 系統使用 30 環境部署 5 建站工具 6 視頻教程 15 開發日志 15

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

      作者:緹墨網絡    時間:2018-10-25   訪問量:14617

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

      所以,剛開始研究PbootCMS制作小程序的時候,第一個想法就是封裝接口。


      文件下載地址:

      PbootCMS小程序接口封裝.zip


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


      1、準備md5加密文件。

      因為PbootCMS的簽名參數signature是經過雙層md5加密的,當然如果后臺WebAPI沒有開啟強制認證的,這一步可以跳過。


      2、封裝一下API的請求方法。

      //聲明一個請求函數
      function api_request(url, method, parm){
          
        var apiurl    = '******';  //域名 + api.php
        var appid     = '******';    //后臺WebAPI中設置的API認證用戶
        var appsecret = '******';    //后臺WebAPI中設置的API認證密鑰
        
        var timestamp = Date.parse(new Date());
            timestamp = timestamp / 1000;    //獲取當前時間戳
           
        var signature = md5.hex_md5(md5.hex_md5(appid + appsecret + timestamp));    //構建signature
      
        var data = {    //因為搜索、留言和表單需要用到POST方法,要通過data傳遞參數,所以先聲明data對象,方便后面添加
           appid: appid,
           timestamp: timestamp,
           signature: signature,
        };
      
        //根據請求方法構建Header
        if (method == 'POST') {
          //POST方法,設置請求頭部
          var header = { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' };
      
          //添加POST參數到data
          for (var i in parm) {
             data[i] = parm[i];
          }
        } else {
          //GET方法,設置請求頭部
          method = 'GET';
          var header = { 'Content-Type': 'application/json' };
        }
      
        //通過promise返回數據
        var promise = new Promise(function(resolve,reject){
              
          //小程序自帶的wx.request請求
          wx.request({
      
            method: method,
            url: apiurl + url,
            header: header,
            data: data,
                  
            //請求成功
            success: function(res){
                      
              var api_data = res.data;
      
              if (api_data.code != 1 && api_data.code != 0){
      
                reject({ error: '數據請求失敗,請稍后重試', code: 500 });
                return;
      
              } else {
      
                resolve(api_data);
              
              }
            
            } 
      
          })
      
        })
          
          //返回數據
        return promise;
      
      }


      3、封裝API模塊

      //這里就比較簡單了,就是構建api的url,然后傳入到api_request這個請求函數,返回數據。
      //下面是根據官方文檔中的api封裝的各個模塊,有些沒有實際測試檢查,可能有手誤什么的,大家自行調整即可。
      
      //Api模塊
      module.exports = {
      
        //獲取公司信息
        companyinfos: function(){
          var url = '/cms/company';
          return api_request(url);
        },
      
        //獲取單個公司信息
        companyinfo: function(name){
          var url = '/cms/company/name/' + name;
          return api_request(url);
        },
      
        //獲取網站信息
        siteinfos: function(){
          var url = '/cms/site';
          return api_request(url);
        },
      
        //獲取單個網站信息
        siteinfo: function(name){
          var url = '/cms/site/name/' + name;
          return api_request(name);
        },
      
        //獲取自定義標簽
        get_labels: function(){
          var url = '/cms/label';
          return api_request(url);
        },
      
        //獲取單個自定義標簽
        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);
        },
      
        //獲取當前欄目
        get_current_cat: function(scode){
          var url = '/cms/sort/scode/' + scode;
          return api_request(url);
        },
      
        //獲取內容列表
        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);
        },
      
        //獲取內容列表第*頁
        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);
        },
      
        //獲取指定內容
        get_content: function(id){
          var url = '/content/' + id;
          return api_request(url);
        },
      
        //獲取指定內容多圖
        get_content_pics: function(id){
          var url = '/cms/pics/id/' + id;
          return api_request(url);
        },
      
        //獲取搜索結果
        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);
        },
      
        //獲取留言內容
        get_message: function(num){
          var url = '/cms/msg/num/' + num;
          return api_request(url);
        },
      
        //獲取留言內容第*頁
        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);
        },
      
        //獲取表單內容
        get_form: function(fcode){
          var url = '/cms/form/fcode/' + fcode;
          return api_request(url);
        },
      
        //獲取表單內容第*頁
        get_form_paged: function(fcode,num,paged){
          var url = '/cms/form/fcode/' + fcode + '/num/' + num + '/page/' + paged;
          return api_request(url);
        },
      
      }


      4、完成了,就這么簡單。


      下面說明一下調用的方法:


      1、在需要調用數據的js頁面引入api文件,例如首頁的index.js

      const api = require('../../utils/api.js');  //路徑根據自己的實際情況調整


      2、在生命周期函數--監聽頁面加載函數中使用api模塊。

      /**
      * 生命周期函數--監聽頁面加載
      */
      onLoad: function (options) {
          
          var that = this;  //劃重點,這句千萬不要忘掉了。
      
          //api.模塊函數.then...來調用,這里companyinfos()是調用公司信息
          api.companyinfos().then(function (rs) {
            //通過setData把獲取到的數據賦值到頁面初始數據的data對象,這樣就可以在wxml中使用數據了。
            that.setData({
              companyinfos: rs.data,
            })
            //把獲取的數據輸出到控制臺看看,實際使用的時候刪除掉下面這行
            console.log(rs.data);
          })
          
        },


      3、控制臺截圖,可以看到公司信息的數據獲取成功,接下來就是綁定數據到頁面的事情了。

      001.jpg


      4、POST請求的使用方法。同樣在生命周期函數--監聽頁面加載函數中使用api模塊。

      //首先聲明一個對象,用來存儲需要通過POST傳遞過去的參數。比如搜索的keyword,scode,留言的字段等。
      
      //這里演示的是搜索模塊,聲明對象,POST搜索的關鍵詞和指定分類。
      var search_obj = {
          'keyword': '模板',
          'scode': '3,5',
      };
      
      //get_search_resault需要傳入 搜索對象(也就是剛才聲明的),返回條數,排序方式。
      //這里演示需要獲取的是分類3和5中的,關鍵詞是模板的5條信息。
      api.get_search_resault(search_obj, 5, 'id').then(function (rs) { 
          that.setData({
            search: rs.data,
          })
          console.log(rs.data);
      })


      5、看看控制臺的截圖。

      002.jpg

      可以看到,已經獲取到分類3和分類5中的,關鍵詞是“模板”,并且按照id進行排序的前5條數據了。


      文章來源:https://www.timoo.net/content/70.html

      上一篇:模板制作教程(二) - 工欲善其事 必先利其器

      下一篇:一個列表中調取多個欄目的的內容

      返回頂部
      国产精品VA在线观看入口,91福利国产在线观看,,亚洲国产日韩欧美一区二区三区,国产精品无码一二区不卡免费