专栏目录请点击
post
请求,参数放在请求体中(body
) {
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"miniprogram",
"name":"wxa",
"url":"http://mp.weixin.qq.com",
"appid":"wx286b93c14bbf93aa",
"pagepath":"pages/lunar/index"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}
在这个参数中,他既有一级菜单,也有二级菜单,并且也有不同功能的按钮
menu.js
,把他放在wechat
文件夹下module.exports = {
"button": [
{
"type": "click",
"name": "今日歌曲",
"key": "V1001_TODAY_MUSIC"
},
{
"name": "菜单",
"sub_button": [
{
"type": "view",
"name": "搜索",
"url": "http://www.soso.com/"
}]
}]
}
ACCESS_TOKEN
,所以我们把请求的放到了获取ACCESS_TOKEN
的WeChat
类中libs
文件夹下新建一个api.js
的文件,专门用来管理接口,并写上如下的内容const prefix = "htps://api.weixin.qq.com/cgi-bin/"
module.exports = {
menu:{
// 创建菜单 https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html
create:prefix + "menu/create?",
// 删除菜单 https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Deleting_Custom-Defined_Menu.html
delete:prefix +'menu/delete?',
// 获取菜单 https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Querying_Custom_Menus.html
get:prefix +'menu/get?',
// 个性化菜单相关
}
}
class WeChat {
// ...
createMenu(body) {
// 创建菜单
return new Promise(async (resolve, reject) => {
try {
const { access_token } = await this.fetchAccessToken()
const url = `${api.menu.create}access_token=${access_token}`
const res = await rp({ method: "POST", json: true, url, body }) // 请求数据
resolve(res)
} catch (error) {
reject(`createMenu方法处理问题${error}`);
}
})
}
deleteMenu() {
return new Promise(async (resolve, reject) => {
try {
const { access_token } = await this.fetchAccessToken()
const url = `${api.menu.delete}access_token=${access_token}`
const res = rp({ method: "GET", json: true, url })
resolve(res)
} catch (error) {
reject(`deleteMenu方法处理问题${error}`)
}
})
}
}
立即执行函数
// 进行测试
(async () => {
const weChatApi = new WeChat()
let data = await weChatApi.deleteMenu()
console.log(data)
data = await weChatApi.createMenu(menu)
console.log(data)
})()