程序员应该具备的美德是“懒”,能用一行代码搞定的,尽量不用两行。
所以,刚开始研究PbootCMS制作小程序的时候,第一个想法就是封装接口。
下面是封装步骤(封装文件在文章提供下载,供大家参考)。
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、完成了,就这么简单。
- 上一篇:一个列表中调取多个栏目的的内容
- 下一篇:让网站域名权重集中,提升SEO效果
请立即点击咨询我们或拨打咨询热线: 4006-555-869,我们会详细为你一一解答你心中的疑难。项目经理在线