003_Vue音乐播放器(音乐推荐列表API接口及调用)

先来分享几个 音乐的API接口

酷狗、QQ音乐、网易云API接口

酷狗API详细

那么Vue使用axios访问这些API接口的时候 会得到后台返回的数据,根据这个数据,先了解其数据格式,比如你需要的播放链接,歌曲名称等,一般来说都是json格式,数组格式,或者字符串格式。

有时候,Vue访问的API接口跨域了,可以通过以下方式解决跨域问题。

在项目目录中congfig文件夹下的index.js文件中proxyTable配置代理。例如:

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    //此处配置代理 
    proxyTable: {
      '/api': {
        target: 'http://api.map.baidu.com/', //访问地址
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/'
        }
      },
    },


在项目中就可以使用访问代替:
"http://api.map.baidu.com/geocoder/v2"              接口时可以使用‘/api’代替,  变成  "/api/geocoder/v2"

使用axios请求则为

(需要 npm run dev 重启项目才能使得proxyTable的设置生效)

axios.get('/api/geocoder/v2', {
    params: {
      //请求参数
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

由于Vue代理需要利用node服务器,所以只适用于本地npm run dev调试

当项目部署到服务器时,可以使用CROS方式、nginx反向代理等方式。

参考文章:

vueJs请求接口获取数据的实现及跨域问题

前端如何使用proxyTable和nginx解决跨域问题

好了,我们回到项目,我们使用jsonp和axios两种方式来进行跨域请求QQ音乐API

1、jsonp方式

使用 cnpm install jsonp --save 来安装jsonp

在common目录下的js文件夹创建 jsonp.js 文件 用来发起jsonp请求(作用看代码注释)

//封装jsonp 函数

import originJSONP from 'jsonp';//引入jsonp

export default function jsonp(url,data,option){//暴露jsonp函数用以发起跨域请求

    //使用请求参数来调用param函数,以此返回带参数的url字符串。其中如果url地址不带 ? 则添加?拼接,否则直接使用 & 拼接参数
    url += (url.indexOf('?')<0? '?':'&') +param(data);

    return new Promise((resolve,reject)=>{
        originJSONP(url,option,(err,data)=>{
            if(!err){//成功请求
                resolve(data);
            }else{
                reject(err);//请求失败
            }
        })
    })
}

//该函数,将 data 数据 拼接到 url 地址中
function param(data){
    let url = '';
    for(var i in data){
        //将url地址 转成字符 存到 value中
        let value = data[i] !== undefined ? data[i]:'';//已定义,设置为当前值,未定义则赋值为空字符串
        //url拼接 请求 的参数(ES6语法)
        url +=`&${i} = ${encodeURIComponent(value)}`
    }
    return url?url.substring(1):"";//url不为空则返回url字符串,为空则返回空字符串

}

在src目录下创建api文件夹,创建 config.js文件用来配置发送jsonp请求的公用参数(省去每次发送jsonp请求时配置一大堆参数)

//暴露一些 访问 API 接口 所需要的公共参数,省去每次请求API都需要配置一堆相同的参数。
//此公共配置文件暴露的参数对应QQ音乐 API 的推荐音乐列表
export const commonParams ={
    g_tk:5391,
    inCharset:'utf-8',
    outCharset:'utf-8',
    notice:0,
    format:'jsonp'
}

export const option ={
    param :'jsonpCallback'
}

export const ERR_OK = 0

 然后在api文件夹中创建recommend.js文件,recommend组件将使用此js文件中暴露的函数来发起jsonp请求,请求QQ音乐的推荐列表数据

import jsonp from '../common/js/jsonp.js'; // 引入jsonp函数
import {commonParams,option} from '../api/config.js'; //请求访问API接口所需的公共参数的文件

//getRecommend函数用于从API接口中获取 推荐 的 数据
export function getRecommend() {
  //访问QQ音乐API的推荐歌单列表数据
  const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'

  // ES6 新函数 assign ,用于对象的深拷贝
  const data = Object.assign({}, commonParams, {
    //另外一些请求所需的参数
    platform: 'h5',
    uin: 0,
    needNewCode: 1
  })

  return jsonp(url, data, option);

 然后在 recommend 组件中引入 请求的函数,和请求成功的相应参数(QQ音乐推荐列表特定)

 然后调用暴露出来的请求函数

 即可得到返回的参数

 

 2、axios方式

首先 cnpm install axios --save 安装axios

 然后在 config 目录下的 index.js 文件中的dev属性中 定义 proxyTable 属性来实现跨域

在需要使用 axios 请求 的组件中引入

 即可使用axios实现跨域请求。

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。适用人群刚刚毕业的学生提高职场竞争力学从零开发SpringBoot项目提升SpringBoot项目开发技术学习SpringBoot项目架构技术学习企业级项目开发技术就是学习SpringBoot开发能学到什么从0开发一个类似企业级项目学会能做出市面上90%通用API快速增加1到2年实际开发经验刚毕业学完后能找到满意的工作已经工作学完后最高涨薪30%课程信息全课程目前是82章,155小时,每节视频都经过精心剪辑。在线学习分辨率最高1080P课程知识点1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制12~16章:搭建开发环境,快速入门SpringBoot框架17~20章:快速入门MySQL数据库21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置31~41章:实现歌单,歌单标签,音乐列表分页,视频,评论,好友功能42~48章:阿里云OSS,话题,MyBatis-plus,应用监控49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索59~61章:商城,集成支付宝SDK,支付宝支付62~64章:常用哈希和加密算法,接口加密和签名65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS81~82章:增强和重构项目,课程总结,后续学习计划

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值