// 雲應用ID 不同商家可能有不同的店鋪。店鋪的雲應用iD不同
const APPS = {
default: '123456' // 默認雲應用ID 123456爲示例,非真實
};
/****
* 如果是模板小程序需要拿到模板id和賣家openID
*/
// let extJson = my.getExtConfigSync();
// const { templateId, sellerOpenId } = extJson;
/**
* ajax請求數據
* 1.雲應用不需要完整域名,只需要接口訪問路徑即可。
* 2.app:調用的雲應用類型,爲APPS內key值。
* 3.method:雲應用僅支持 GET,POST。
* 4.POST 請求僅支持 application/json json數據格式傳輸。
*/
export default async function ajax({
url, app = 'default', method = 'GET',
data = {},
headers = {},
params = {},
}) {
try {
const { cloud } = getApp(); // getApp獲取整個應用的實例
const appId = APPS[app] || APPS.default; // 關聯的雲應用ID
const paramsStr = Object.keys(params).map(key => `${key}=${params[key]}`).join('&');
url = `/${url}${paramsStr ? `?${paramsStr}` : ''}`;
/**
* 如果是模板小程序
* */
// url = `/${url}?templateId=${templateId}&sellerOpenId=${sellerOpenId}${paramsStr ? `&${paramsStr}` : ''}`;
let options = {
path: url, method, headers,
exts: {
cloudAppId: appId, // 雲應用iD
// timeout: 5000
},
}
options.headers = {
...options.headers,
'Content-Type': options.method === 'POST'
? 'application/json'
: 'application/x-www-form-urlencoded',
};
if (options.method === 'POST') {
options.body = data;
} else {
options.method = 'GET';
// options.params = data;
const qs = Object.keys(data)
.map(key => `${key}=${data[key]}`)
.join('&');
if (qs) url = `${url}&${qs}`;
options.path = url;
}
// console.log('options ====> ', options)
const result = await cloud.application.httpRequest(options);
// console.log(result)
return result;
} catch (e) {
console.info(url + ' error!', e);
throw e;
};
}
淘寶小程序開發——請求封裝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.