获取轮播图接口数据就报错了..
来源:2-5 获取轮播图接口数据
安分小兔纸
2021-08-10
虽然网页可以展示,但是获取不了数据
router.js按照老师视频中的代码自己手打了一遍,不知道哪里出错了
router.js代码:
const axios = require('axios')
const getSecuritySign = require('./sign')
const ERR_OK = 0
const token = 5381
// /公共参数/
const commonParams = {
g_tk: token,
loginUin: 0,
hostUin: 0,
inCharset: 'utf8',
outCharset: 'utf-8',
notice: 0,
needNewCode: 0,
format: 'json',
platform: 'yqq.json'
}
// 获取一个随机数
function getRandomVal(prefix = '') {
return prefix + (Math.random() + '').replace('0.', '')
}
// 对axios get 请求的封装
// 修改请求的headers值,合并公告请求参数
function get(url, params) {
return axios.get(url, {
headers: {
referer: 'https://y.qq.com/',
origin: 'https://y.qq.com/'
},
params: Object.assign({}, commonParams, params)
})
}
// 注册后端路由
function registerRouter(app) {
registerRecommend(app)
}
// 注册推荐列表接口路由
function registerRecommend(app) {
app.get('/api/getRecommend', (req, res) => {
// 第三方服务接口
const url = 'https://u.y.qq.com/cgi-bin/musics.fcg'
// 构造请求data参数
const data = JSON.stringify({
comm: {
ct: 24
},
recomPlaylist: {
method: 'get_hot_recommend',
param: {
async: 1,
cmd: 2
},
module: 'playlist.HotRecommendServer'
},
focus: {
module: 'music.musicHall.MusicHallPlatform',
method: 'GetFoucus',
param: {}
}
})
// 随机数值
const randomVal = getRandomVal('recom')
// 计算签名值
const sign = getSecuritySign(data)
// 发送get请求
get(url, {
sign,
'-': randomVal,
data
}).then((response) => {
const data = response.data
if (data.code === ERR_OK) {
const focusList = data.focus.data.shelf.v_niche[0].v_card
const sliders = []
const jumpPrefixMap = {
10002: 'https://y.qq.com/n/yqq/album/',
10014: 'https://y.qq.com/n/yqq/playlist/',
10012: 'https://y.qq.com/n/yqq/mv/v/'
}
// 最多获取10条数据
const len = Math.min(focusList.length, 10)
for (let i = 0; i < len; i++) {
const item = focusList[i]
const sliderItem = {}
// 单个轮播图数据包括id / pic、link等字段
sliderItem.id = item.id
sliderItem.pic = item.cover
if (jumpPrefixMap[item.jumptype]) {
sliderItem.link = jumpPrefixMap[item.jumptype] + (item.subid || item.id) + '.html'
} else if (item.jumptype === 3001) {
sliderItem.link = item.id
}
sliders.push(sliderItem)
}
// 处理推荐歌单数据
const albumList = data.recomPlaylist.data.v_hot
const albums = []
for (let i = 0; i < albumList.length; i++) {
const item = albumList[i]
const albumItem = {}
// 单个轮播图数据包括id / pic、link等字段
albumItem.id = item.content_id
albumItem.username = item.username
albumItem.title = item.title
albumItem.pic = item.cover
albums.push(albumItem)
}
// 往端发送一个标准格式的响应数据,包括成功错误码和数据
res.json({
code: ERR_OK,
result: {
sliders,
albums
}
})
} else {
res.json(data)
}
})
})
}
module.exports = registerRouter
写回答
2回答
-
ustbhuangyi
2021-08-10
单词拼错了00 -
ustbhuangyi
2021-08-10
你把代码传到 GitHub 上,我抽空帮你看看
012021-08-10
相似问题