PbootCms小程序API封装教程

发布时间:2025-08-15 作者:超级管理员 来源:本站 浏览量(39) 点赞(33)
摘要:封装代码下面是封装步骤(封装文件在文章最后提供下载,供大家参考)。1、准备md5加密文件。因为PbootCMS的签名参数signature是经过双层md5加密的,当然如果后台WebAPI没有开启强制认证的,这一步可以跳过。2、封装一下API的请求方法。//声明一个请求函数functionapi_request(url,method,parm){&nb

封装代码

下面是封装步骤(封装文件在文章最后提供下载,供大家参考)。

1、准备md5加密文件。

因为PbootCMS的签名参数signature是经过双层md5加密的,当然如果后台WebAPI没有开启强制认证的,这一步可以跳过。

2、封装一下API的请求方法。


  1. //声明一个请求函数

  2. function api_request(url, method, parm){

  3.   var apiurl    = '******';  //域名 + api.php

  4.   var appid     = '******';    //后台WebAPI中设置的API认证用户

  5.   var appsecret = '******';    //后台WebAPI中设置的API认证密钥

  6.   

  7.   var timestamp = Date.parse(new Date());

  8.       timestamp = timestamp / 1000;    //获取当前时间戳

  9.      

  10.   var signature = md5.hex_md5(md5.hex_md5(appid + appsecret + timestamp));    //构建signature


  11.   var data = {    //因为搜索、留言和表单需要用到POST方法,要通过data传递参数,所以先声明data对象,方便后面添加

  12.      appid: appid,

  13.      timestamp: timestamp,

  14.      signature: signature,

  15.   };


  16.   //根据请求方法构建Header

  17.   if (method == 'POST') {

  18.     //POST方法,设置请求头部

  19.     var header = { 'Content-Type''application/x-www-form-urlencoded; charset=utf-8' };


  20.     //添加POST参数到data

  21.     for (var i in parm) {

  22.        data[i] = parm[i];

  23.     }

  24.   } else {

  25.     //GET方法,设置请求头部

  26.     method = 'GET';

  27.     var header = { 'Content-Type''application/json' };

  28.   }

  29.   //通过promise返回数据

  30.   var promise = new Promise(function(resolve,reject){

  31.     //小程序自带的wx.request请求

  32.     wx.request({

  33.       method: method,

  34.       url: apiurl + url,

  35.       header: header,

  36.       data: data,

  37.       //请求成功

  38.       successfunction(res){

  39.         var api_data = res.data;

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

  41.           reject({ error'数据请求失败,请稍后重试'code500 });

  42.           return;

  43.         } else {

  44.           resolve(api_data);

  45.         }

  46.       } 

  47.     })

  48.   })

  49.     //返回数据

  50.   return promise;


  51. }


3、封装API模块


  1. //这里就比较简单了,就是构建api的url,然后传入到api_request这个请求函数,返回数据。

  2. //下面是根据官方文档中的api封装的各个模块,有些没有实际测试检查,可能有手误什么的,大家自行调整即可。


  3. //Api模块

  4. module.exports = {


  5.   //获取公司信息

  6.   companyinfosfunction(){

  7.     var url = '/cms/company';

  8.     return api_request(url);

  9.   },


  10.   //获取单个公司信息

  11.   companyinfofunction(name){

  12.     var url = '/cms/company/name/' + name;

  13.     return api_request(url);

  14.   },


  15.   //获取网站信息

  16.   siteinfosfunction(){

  17.     var url = '/cms/site';

  18.     return api_request(url);

  19.   },


  20.   //获取单个网站信息

  21.   siteinfofunction(name){

  22.     var url = '/cms/site/name/' + name;

  23.     return api_request(name);

  24.   },


  25.   //获取自定义标签

  26.   get_labelsfunction(){

  27.     var url = '/cms/label';

  28.     return api_request(url);

  29.   },


  30.   //获取单个自定义标签

  31.   get_labelfunction(){

  32.     var url = '/cms/label/name/' + name;

  33.     return api_request(url);

  34.   },


  35.   //获取幻灯片

  36.   get_slidefunction(gid,num){

  37.     var url = '/cms/slide/gid/' + gid + '/num/' + num;

  38.     return api_request(url);

  39.   },


  40.   //获取友情链接

  41.   get_linksfunction(gid,num){

  42.     var url = '/cms/link/gid/' + gid + '/num/' + num;

  43.     return api_request(url);

  44.   },


  45.   //获取栏目列表

  46.   get_navsfunction(){

  47.     var url = '/cms/nav';

  48.     return api_request(url);

  49.   },


  50.   //获取指定栏目列表

  51.   get_navfunction(scode){

  52.     var url = '/cms/nav/scode/' + scode;

  53.     return api_request(url);

  54.   },


  55.   //获取当前栏目

  56.   get_current_catfunction(scode){

  57.     var url = '/cms/sort/scode/' + scode;

  58.     return api_request(url);

  59.   },


  60.   //获取内容列表

  61.   get_listfunction(scode,num,order){

  62.     if( ( num != '' ) && !order ){

  63.       var url = '/list/' + scode + '/num/' + num;

  64.     } else if( !num && ( order != '' ) ){

  65.       var url = '/list/' + scode + '/order/' + order;

  66.     } else if ( (num != '') && (order != '') ){

  67.       var url = '/list/' + scode + '/num/' + num + '/order/' + order;

  68.     } else {

  69.       var url = '/list/' + scode;

  70.     }

  71.     return api_request(url);

  72.   },


  73.   //获取内容列表第*页

  74.   get_list_pagedfunction (scode, paged, num, order{

  75.     if ((num != '') && (order == '')) {

  76.       var url = '/list/' + scode + '/num/' + num + '/page/' + paged;

  77.     } else if ((num == '') && (order != '')) {

  78.       var url = '/list/' + scode + '/order/' + order + '/page/' + paged;

  79.     } else if ((num != '') && (order != '')) {

  80.       var url = '/list/' + scode + '/num/' + num + '/order/' + order + '/page/' + paged;

  81.     } else {

  82.       var url = '/list/' + scode + '/page/' + paged;

  83.     }

  84.     return api_request(url);

  85.   },


  86.   //获取指定内容

  87.   get_contentfunction(id){

  88.     var url = '/content/' + id;

  89.     return api_request(url);

  90.   },


  91.   //获取指定内容多图

  92.   get_content_picsfunction(id){

  93.     var url = '/cms/pics/id/' + id;

  94.     return api_request(url);

  95.   },


  96.   //获取搜索结果

  97.   get_search_resaultfunction(parm,num,order)

  98.     if ((num != '') && (order == '')) {

  99.       var url = '/cms/search/' + 'num/' + num;

  100.     } else if ((num == '') && (order != '')) {

  101.       var url = '/cms/search/' + 'oder/' + order;

  102.     } else if ((num != '') && (order != '')) {

  103.       var url = '/cms/search/num/' + num + '/order/' + order;

  104.     } else {

  105.       var url = '/cms/search/';

  106.     }

  107.     return api_request(url, 'POST', parm);

  108.   },


  109.   //提交留言

  110.   add_messagefunction(parm){

  111.     var url = '/cms/addmsg';

  112.     return api_request(url, 'POST', parm);

  113.   },


  114.   //获取留言内容

  115.   get_messagefunction(num){

  116.     var url = '/cms/msg/num/' + num;

  117.     return api_request(url);

  118.   },


  119.   //获取留言内容第*页

  120.   get_message_pagedfunction(num,paged){

  121.     var url = '/cms/msg/num/' + num + '/page/' + paged;

  122.     return api_request(url);

  123.   },


  124.   //提交表单

  125.   add_formfunction(fcode,parm){

  126.     var url = '/cms/addform/fcode/' + fcode;

  127.     return api_request(url, 'POST', parm);

  128.   },


  129.   //获取表单内容

  130.   get_formfunction(fcode){

  131.     var url = '/cms/form/fcode/' + fcode;

  132.     return api_request(url);

  133.   },


  134.   //获取表单内容第*页

  135.   get_form_pagedfunction(fcode,num,paged){

  136.     var url = '/cms/form/fcode/' + fcode + '/num/' + num + '/page/' + paged;

  137.     return api_request(url);

  138.   },


  139. }


4、完成了,就这么简单。

下面说明一下调用的方法:

1、在需要调用数据的js页面引入api文件,例如首页的index.js


  1. const api = require('../../utils/api.js');  //路径根据自己的实际情况调整


2、在生命周期函数--监听页面加载函数中使用api模块。


  1. /**

  2. * 生命周期函数--监听页面加载

  3. */

  4. onLoadfunction (options{

  5.     

  6.     var that = this;  //划重点,这句千万不要忘掉了。


  7.     //api.模块函数.then...来调用,这里companyinfos()是调用公司信息

  8.     api.companyinfos().then(function (rs{

  9.       //通过setData把获取到的数据赋值到页面初始数据的data对象,这样就可以在wxml中使用数据了。

  10.       that.setData({

  11.         companyinfos: rs.data,

  12.       })

  13.       //把获取的数据输出到控制台看看,实际使用的时候删除掉下面这行

  14.       console.log(rs.data);

  15.     })

  16.     

  17.   },


3、控制台截图,可以看到公司信息的数据获取成功,接下来就是绑定数据到页面的事情了。

001.jpg

4、POST请求的使用方法。同样在生命周期函数--监听页面加载函数中使用api模块。


  1. //首先声明一个对象,用来存储需要通过POST传递过去的参数。比如搜索的keyword,scode,留言的字段等。


  2. //这里演示的是搜索模块,声明对象,POST搜索的关键词和指定分类。

  3. var search_obj = {

  4.     'keyword''模板',

  5.     'scode''3,5',

  6. };


  7. //get_search_resault需要传入 搜索对象(也就是刚才声明的),返回条数,排序方式。

  8. //这里演示需要获取的是分类3和5中的,关键词是模板的5条信息。

  9. api.get_search_resault(search_obj, 5'id').then(function (rs

  10.     that.setData({

  11.       search: rs.data,

  12.     })

  13.     console.log(rs.data);

  14. })


5、看看控制台的截图。

002.jpg

可以看到,已经获取到分类3和分类5中的,关键词是“模板”,并且按照id进行排序的前5条数据了。

以上压缩包链接: https://pan.baidu.com/s/1AKv40JxvY-H1N-GzZSFZfw 提取码: vm3w


免责声明:本站转载旨在“信息共享”传递之目的,转载文章中所有素材的版权归原作者所有,本站不承担任何的法律责任,如有侵权请联系我们删除。
二维码

扫一扫,关注我们

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题以及友情链接和合作等事宜~