发表于: 2019-01-13 08:56:08

1 643


今天完成的事情: 后端代理,获取QQ音乐歌单数据

这是在vue里webpack.dev.conf.js里的代码,

devServer: {
// 后端代理,转发ajax请求
before(app) {
app.use(bodyParser.urlencoded({extended: true}))
const querystring = require('querystring')

app.get('/api/getDiscList', function(req, res) { // 在前端部分,可以用axios.get('/api/getDiscList')获得下面res.json(data)的数据
const url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg'
axios.get(url, { // axios再node里发送的是http请求
headers: {
referer: 'https://c.y.qq.com/', // 和qq音乐的referer相同
host: 'c.y.qq.com'
},
params: req.query
}).then((response) => { // 请求成功返回response(qq音乐歌单数据)
res.json(response.data) // 从qq音乐服务器返回歌单数据的data部分通过res.json()传给前端
}).catch((e) => {
console.log(e)
})
})
},

前端部分

// 获取歌单数据
export function getDiscList() {
const url = '/api/getDiscList'

const data = Object.assign({}, commonParams, { // 合并参数(通用参数、自定义参数)到一个对象上
platform: 'yqq',
hostUin: 0,
sin: 0,
ein: 29,
sortId: 5,
needNewCode: 0,
categoryId: 10000000,
rnd: Math.random(),
format: 'json'
})

return axios.get(url, { // axios会自动将params的参数拼接到url上
params: data
}).then((res) => {
return Promise.resolve(res.data) // 返回一个promise对象(数据在then())
})
}

明天计划的事情:完成歌单列表
遇到的问题:暂未
收获:axios在node下发送的是http请求,在vue里(browser)发送的是ajax请求,

获取歌单数据分为两步:

第一步是后端代理,从qq音乐服务器请求返回数据,放到本地上,

第二步是用ajax获取已存放到本机上的数据



返回列表 返回列表
评论

    分享到