PbootCMS小程序接口封裝.zip
下面是封裝步驟(封裝文件在文章較后提供下載,供大家參考)。
//聲明一個請求函數(shù)
function api_request(url, method, parm){
var apiurl = '******'; //域名 + api.php
var appid = '******'; //后臺WebAPI中設(shè)置的API認證用戶
var appsecret = '******'; //后臺WebAPI中設(shè)置的API認證密鑰
var timestamp = Date.parse(new Date());
timestamp = timestamp / 1000; //獲取當前時間戳
var signature = md5.hex_md5(md5.hex_md5(appid + appsecret + timestamp)); //構(gòu)建signature
var data = { //因為搜索、留言和表單需要用到POST方法,要通過data傳遞參數(shù),所以先聲明data對象,方便后面添加
appid: appid,
timestamp: timestamp,
signature: signature,
};
//根據(jù)請求方法構(gòu)建Header
if (method == 'POST') {
//POST方法,設(shè)置請求頭部
var header = { 'Content-Type': 'application/x-**-form-urlencoded; charset=utf-8' };
//添加POST參數(shù)到data
for (var i in parm) {
data = parm;
}
} else {
//GET方法,設(shè)置請求頭部
method = 'GET';
var header = { 'Content-Type': 'application/json' };
}
//通過promise返回數(shù)據(jù)
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: '數(shù)據(jù)請求失敗,請稍后重試', code: 500 });
return;
} else {
resolve(api_data);
}
}
})
})
//返回數(shù)據(jù)
return promise;
}
3、封裝API模塊//這里就比較簡單了,就是構(gòu)建api的url,然后傳入到api_request這個請求函數(shù),返回數(shù)據(jù)。
//下面是根據(jù)官方文檔中的api封裝的各個模塊,有些沒有實際測試檢查,可能有手誤什么的,大家自行調(diào)整即可。
//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);
},
//獲取網(wǎng)站信息
siteinfos: function(){
var url = '/cms/site';
return api_request(url);
},
//獲取單個網(wǎng)站信息
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);
},
//獲取內(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)容列表第*頁
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)容第*頁
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)容第*頁
get_form_paged: function(fcode,num,paged){
var url = '/cms/form/fcode/' + fcode + '/num/' + num + '/page/' + paged;
return api_request(url);
},
}
4、完成了,就這么簡單。
???????/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
var that = this; //劃重點,這句千萬不要忘掉了。
//api.模塊函數(shù).then...來調(diào)用,這里companyinfos()是調(diào)用公司信息
api.companyinfos().then(function (rs) {
//通過setData把獲取到的數(shù)據(jù)賦值到頁面初始數(shù)據(jù)的data對象,這樣就可以在wxml中使用數(shù)據(jù)了。
that.setData({
companyinfos: rs.data,
})
//把獲取的數(shù)據(jù)輸出到控制臺看看,實際使用的時候刪除掉下面這行
console.log(rs.data);
})
},
3、控制臺截圖,可以看到公司信息的數(shù)據(jù)獲取成功,接下來就是綁定數(shù)據(jù)到頁面的事情了。
???????//首先聲明一個對象,用來存儲需要通過POST傳遞過去的參數(shù)。比如搜索的keyword,scode,留言的字段等。
//這里演示的是搜索模塊,聲明對象,POST搜索的關(guān)鍵詞和指定分類。
var search_obj = {
'keyword': '模板',
'scode': '3,5',
};
//get_search_resault需要傳入 搜索對象(也就是剛才聲明的),返回條數(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、看看控制臺的截圖。
可以看到,已經(jīng)獲取到分類3和分類5中的,關(guān)鍵詞是"模板",并且按照id進行排序的前5條數(shù)據(jù)了。
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除!謝謝!
轉(zhuǎn)載請注明: PbootCMS小程序API的封裝方法