获取轮播图接口数据就报错了..

来源: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

//img.mukewang.com/szimg/6112a0bf09ba95c118000434.jpg
单词拼错了

0
0

ustbhuangyi

2021-08-10

你把代码传到 GitHub 上,我抽空帮你看看


0
1
安分小兔纸
嗯 现在上传了 https://github.com/ManmanLi1994/vue-music-part1- (因为刚开始没有代码,样式在写的时候瞎改了点)
2021-08-10
共1条回复

Vue3开发企业级音乐Web App 明星讲师带你学大厂代码

慕课网明星讲师黄轶深度讲解 Vue3.0 ,提升的不止是Vue代码能力

2225 学习 · 1002 问题

查看课程