React + Mobx + Typescript 從0到1打造一款仿網易雲音樂APP(一)—— 打造EggJS版API

引言

該項目會以 React 全家桶 (會使用 16.8 最新 API 及 hooks) 以及 mobx 數據流方案爲基礎打造的一款高質量的移動端音樂類 WebApp 。javascript

涉及的技術棧主要有:前端

  • react v16.8 全家桶 (react,react-router) : 用於構建用戶界面的 MVVM 框架
  • mobx 前端數據流方案
  • immutable: Facebook 歷時三年開發出的進行持久性數據結構處理的庫
  • axios: 用來請求後端 api 的數據。

此篇爲第一篇,主要是 網易雲 EggJs API 的實現。後面的數據都會源於網易雲官方的數據。 網易雲音樂 EggJs 版 API,github 地址,接口正在持續更新中,目前已經支持網易雲音樂中的大部分接口,包含登陸註冊。java

工做原理

跨站請求僞造 (CSRF), 僞造請求頭 , 調用官方 API。react

特別聲明

本項目不提供線上 demo,請不要輕易信任使用他人提供的公開服務,以避免發生安全問題,泄露本身的帳號和密碼 webpack

部分接口如登陸接口不能調用太頻繁 , 不然可能會觸發 503 錯誤或者 ip 高頻錯誤 ,若需頻繁調用 , 須要準備 IP 代理池. ios

本項目僅供學習使用,請尊重版權,請勿利用此項目從事商業行爲 git

EggJS 中間件實現

這裏簡要提一下 EggJs 的中間件。Egg 是基於 Koa 實現的,因此 Egg 的中間件形式和 Koa 的中間件形式是同樣的,都是基於洋蔥圈模型。github

處理 cookie 中間件

/** * 處理cookie */
module.exports = () => {
  return async function (ctx, next) {
    const { response } = ctx;
    await next();
    response.append('Set-Cookie', response.body && response.body.cookie);
  };
};
複製代碼

錯誤處理中間件

module.exports = () => {
  return async function (ctx, next) {
    try {
      await next();
    } catch (error) {
      ctx.body = error.body;
      ctx.status = error.status;
    }
  };
};
複製代碼

包含接口

特別聲明,接口示範使用如下格式 web

Method /xxx/:xxxx/xxx

@body:
{
	"***": "**********",
	"**"?: "*********" // ?表明可選
}

@param:
{
    "***": "********"
}

@query:
{
    "***": "***********",
    "***"?: "**********"
}

複製代碼

參數統一聲明 limit : 返回數量 , 默認爲 30 offset : 偏移數量,用於分頁 , 如 :( 當前頁碼 -1)*30, 其中 30 爲 limit 的值 , 默認爲 0 axios

1.登陸模塊

1.1 手機號登陸

必選參數 :

phone: 手機號碼
password: 密碼
複製代碼

接口地址 :

/login/cellphone
複製代碼

可選參數 :

rememberLogin: 30天免登陸,默認false
複製代碼

調用例子 :

POST /login/cellphone

@body:
{
	phone: "**********",
	password: "*****",
	rememberLogin?: true

}
複製代碼

1.2 郵箱登陸

必選參數 :

email: 手機號碼
password: 密碼
複製代碼

接口地址 :

/login/email
複製代碼

可選參數 :

rememberLogin: 30天免登陸,默認false
複製代碼

調用例子 :

POST /login/email

@body:
{
	email: "**********",
	password: "*****",
	rememberLogin: true
}
複製代碼

1.3 初始化暱稱

必選參數 :

nickname: 暱稱
複製代碼

接口地址 :

/login/init/profile
複製代碼

調用例子 :

POST /login/init/profile

@body
{
	nickname: "**********"
}
複製代碼

1.4 發送手機驗證碼

必選參數 :

cellphone: 手機號碼
複製代碼

接口地址 :

/login/sms/captcha/send
複製代碼

可選參數 :

ctcode: 國家區號,默認86即中國
複製代碼

調用例子 :

POST /login/sms/captcha/send

// body
{
	ctcode?: "86",
	cellphone: "*******"
}
複製代碼

1.5 校驗手機驗證碼

必選參數 :

cellphone: 手機號碼
captcha: 驗證碼
複製代碼

接口地址 :

/login/sms/captcha/verify
複製代碼

可選參數 :

ctcode: 國家區號,默認86即中國
複製代碼

調用例子 :

POST /login/sms/captcha/verify

// body
{
	ctcode?: "86",
	cellphone: "*******",
	captcha: "****"
}
複製代碼

1.6 檢測手機號碼是否已註冊

必選參數 :

cellphone: 手機號碼
複製代碼

接口地址 :

/login/cellphone/check/exist
複製代碼

可選參數 :

countrycode: 國家碼,用於國外手機號登錄,例如美國傳入:1
複製代碼

調用例子 :

POST /login/cellphone/check/exist

// body
{
	countrycode?: "86",
	cellphone: "*******"
}
複製代碼

1.7 刷新登陸

接口地址 :

/login/refresh

調用例子 :

GET / login / refresh;
複製代碼

1.8 獲取登陸狀態

接口地址 :

/login/status
複製代碼

調用例子 :

GET / login / status;
複製代碼

1.9 退出登陸

接口地址 :

/logout
複製代碼

調用例子 :

GET / logout;
複製代碼

2.用戶模塊

2.1 獲取用戶錄音

說明 : 登錄後調用此接口,可獲取用戶建立的電臺

必選參數 :

複製代碼

接口地址 :

/user/audios
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / audios;
複製代碼

2.2 刪除用戶雲盤歌曲

說明 : 登錄後調用此接口,可刪除雲盤歌曲

必選參數 :

ids: 歌曲id數組
複製代碼

接口地址 :

/user/cloud/song/del
複製代碼

可選參數 :

複製代碼

調用例子 :

DELETE /user/cloud/song/del

@body
{
    ids: ["****","****"]
}
複製代碼

2.3 獲取用戶雲盤數據詳情

說明: 登錄後調用此接口,傳入雲盤歌曲 ids,可獲取雲盤數據詳情

必選參數 :

ids: 多個歌曲id用","分隔
複製代碼

接口地址 :

/user/cloud/songs/info
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /user/cloud/songs/info

@query
{
	ids: "***,***"
}
複製代碼

2.4 獲取雲盤音樂列表

說明: 登錄後調用此接口 , 可獲取雲盤數據 , 獲取的數據沒有對應 url, 須要再調用一 次 /song/url 獲取 url。

必選參數 :

複製代碼

接口地址 :

/user/cloud
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 , 如 :( 當前頁碼 -1)*30, 其中 30 爲 limit 的值 , 默認爲 0
複製代碼

調用例子 :

GET /user/cloud

// query
{
	limit?: 100,
	offset?: 1
}
複製代碼

2.5 獲取用戶信息

說明 : 登錄後調用此接口,能夠獲取用戶詳情

必選參數 :

複製代碼

接口地址 :

/user/info
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / info;
複製代碼

2.6 獲取用戶電臺

說明 : 登錄後調用此接口,能夠獲取用戶電臺

必選參數 :

cellphone: 手機號碼
複製代碼

接口地址 :

複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / djs;
複製代碼

2.7 獲取用戶動態

說明 : 登錄後調用此接口,能夠獲取用戶動態

必選參數 :

複製代碼

接口地址 :

/user/event
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
lasttime : 返回數據的 lasttime ,默認-1,傳入上一次返回結果的 lasttime,將會返回下一頁的數據
複製代碼

調用例子 :

GET /user/event

@query
{
	limit?: 30,
	lasttime: -1
}
複製代碼

2.8 獲取用戶粉絲

說明 : 登錄後調用此接口,能夠獲取用戶粉絲列表

必選參數 :

複製代碼

接口地址 :

/user/followeds
複製代碼

可選參數 :

可選參數 : limit : 返回數量 , 默認爲 30
lasttime : 返回數據的 lasttime ,默認-1,傳入上一次返回結果的 lasttime,將會返回下一頁的數據
複製代碼

調用例子 :

GET /user/followeds

@query
{
	limit?: 30,
	lasttime: -1
}
複製代碼

2.9 獲取用戶關注者

說明 : 登錄後調用此接口,能夠獲取用戶關注列表

必選參數 :

複製代碼

接口地址 :

/user/follows
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 , 如 :( 當前頁碼 -1)*30, 其中 30 爲 limit 的值 , 默認爲 0
複製代碼

調用例子 :

GET /user/follows

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

2.10 獲取用戶播放列表

說明 : 登錄後調用此接口,能夠獲取用戶歌單

必選參數 :

複製代碼

接口地址 :

/user/playlist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 , 如 :( 當前頁碼 -1)*30, 其中 30 爲 limit 的值 , 默認爲 0
複製代碼

調用例子 :

GET /user/playlist

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

2.11 獲取用戶播放記錄

說明:登錄後調用此接口,可獲取用戶播放記錄

必選參數 :

複製代碼

接口地址 :

/user/playrecord
複製代碼

可選參數 :

type: type=1 時只返回週數據, type=0 時返回全部數據
複製代碼

調用例子 :

GET /user/playrecord

@query
{
	type?: 0
}
複製代碼

2.12 獲取用戶收藏計數

說明:登錄後調用此接口,可獲取用戶收藏計數

必選參數 :

複製代碼

接口地址 :

/user/subcount
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / subcount;
複製代碼

2.13 更新用戶信息

說明 : 登錄後調用此接口,傳入相關信息,能夠更新用戶信息

必選參數 :

gender: 性別 0:保密 1:男性 2:女性

birthday: 出生日期,時間戳 unix timestamp

nickname: 用戶暱稱

province: 省份id // 能夠調用/custom/citylist接口獲取

city: 城市id // 能夠調用/custom/citylist接口獲取

signature:用戶簽名
複製代碼

接口地址 :

/user/info
複製代碼

可選參數 :

複製代碼

調用例子 :

PUT /user/info

// body
{
    gender: 0
    birthday: 134567788
    nickname: "***"
    province: 400022
    city: 2344554
    signature:"****"
}
複製代碼

2.14 獲取用戶操做記錄

說明 : 登錄後調用此接口,能夠獲取用戶操做記錄

必選參數 :

複製代碼

接口地址 :

/user/logs
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / logs;
複製代碼

2.15 獲取用戶 FM

說明 : 登錄後調用此接口,能夠獲取用戶 FM

必選參數 :

複製代碼

接口地址 :

/user/fm
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / fm;
複製代碼

2.16 獲取用戶推薦電臺節目

說明 : 調用此接口 , 可獲取推薦電臺

必選參數 :

複製代碼

接口地址 :

/user/rec/djprogram
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / rec / djprogram;
複製代碼

2.17 獲取用戶推薦 MV

說明 : 調用此接口 , 可獲取推薦 MV

必選參數 :

複製代碼

接口地址 :

/user/rec/mv
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / rec / mv;
複製代碼

2.18 獲取用戶推薦新歌

說明 : 調用此接口 , 可獲取推薦新歌

必選參數 :

複製代碼

接口地址 :

/user/rec/newsong
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / rec / newsong;
複製代碼

2.19 獲取獨家放送

說明 : 調用此接口 , 可獲取獨家放送

必選參數 :

複製代碼

接口地址 :

/user/privatecontent
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / user / privatecontent;
複製代碼

2.20 獲取用戶推薦歌單

說明 : 調用此接口 , 可獲取獨獨家推薦歌單

必選參數 :

複製代碼

接口地址 :

/user/rec/playlist
複製代碼

可選參數 :

limit:返回數量 , 默認爲 30
複製代碼

調用例子 :

GET /user/rec/playlist

@query
{
	limit?: 30
}
複製代碼

3.專輯模塊

3.1 獲取專輯動態信息

說明 : 調用此接口 , 可獲取專輯動態信息

必選參數 :

albumId: 專輯ID
複製代碼

接口地址 :

/album/:albumId/detail/dynamic
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /album/:albumId/detail/dynamic

@param
{
	albumId: 12244
}
複製代碼

3.2 獲取最新專輯

說明 : 調用此接口 , 可獲取最新專輯

必選參數 :

複製代碼

接口地址 :

/album/latest
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / album / latest;
複製代碼

3.3 收藏|取消收藏 專輯

說明 : 調用此接口 , 可收藏|取消收藏 專輯

必選參數 :

albumId:專輯ID
actionType: 操做類型,收藏:"sub" ,取消收藏:"unsub"
複製代碼

接口地址 :

/album/:albumId/sub/:actionType
複製代碼

可選參數 :

limit:返回數量 , 默認爲 30
複製代碼

調用例子 :

POST /album/:albumId/sub/:actionType

@param
{
	albumId: "****",
	actionType: "sub"
}
複製代碼

3.4 獲取收藏專輯列表

說明 : 調用此接口 , 可獲取收藏專輯列表

必選參數 :

複製代碼

接口地址 :

/album/sublist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 , 如 :( 當前頁碼 -1)*30, 其中 30 爲 limit 的值 ,
複製代碼

調用例子 :

GET /album/sublist

@query
{
    offset?: 0,
	limit?: 30
}
複製代碼

3.5 獲取專輯信息

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

albumId: 專輯ID
複製代碼

接口地址 :

/album/:albumId/info
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /album/:albumId/info

@param
{
	albumId: "****"
}
複製代碼

4.歌手模塊

4.1 獲取歌手列表

說明 : 調用此接口 , 可獲取歌手列表

必選參數 :

複製代碼

接口地址 :

/artist/list
複製代碼

可選參數 :

調用例子 :

GET /artist/list

@param
{
	limit?: 30,
	offset?: 1
	categoryCode: 1001,
	initial: 'a'
}
複製代碼

4.2 獲取歌手簡介

說明 : 調用此接口 , 可獲取歌手簡介

必選參數 :

artistId: 歌手ID
複製代碼

接口地址 :

/artist/:artistId/brief
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /artist/:artistId/brief

@param
{
	artistId: "****"
}
複製代碼

4.3 獲取歌手信息

說明 : 調用此接口 , 可獲取歌手信息

必選參數 :

artistId: 歌手ID
複製代碼

接口地址 :

/artist/:artistId/info
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /artist/:artistId/info

@param
{
	artistId: "****"
}
複製代碼

4.4 獲取歌手專輯

說明 : 調用此接口 , 可獲取歌手專輯

必選參數 :

artistId: 歌手ID
複製代碼

接口地址 :

/artist/:artistId/albums
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /artist/:artistId/albums

@param
{
	artistId: "****"
}
@query
{
    limit?: 30,
    offset: 1
}
複製代碼

4.5 獲取歌手 MV

說明 : 調用此接口 , 可獲取歌手 MV

必選參數 :

artistId: 歌手ID
複製代碼

接口地址 :

/artist/:artistId/mv
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /artist/:artistId/mv

@param
{
	artistId: "****"
}
@query
{
    limit?: 30,
    offset: 1
}
複製代碼

4.6 獲取歌手 50 首流行歌曲

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

artistId: 歌手ID
複製代碼

接口地址 :

/artist/:artistId/top/song
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /artist/:artistId/top/song

@param
{
	artistId: "****"
}
複製代碼

4.7 收藏|取消收藏歌手

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

artistId: 歌手ID
actionType: 操做類型,收藏:"sub",取消收藏:"unsub"
複製代碼

接口地址 :

/artist/:artistId/sub/:actionType
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /artist/:artistId/sub/:actionType

@param
{
	artistId: "****",
	actionType: "sub"
}
複製代碼

4.8 獲取訂閱歌手列表

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

複製代碼

接口地址 :

/artist/sublist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /artist/sublist

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

5.評論模塊

5.1 獲取資源評論

說明 : 調用此接口 , 可獲取資源評論

必選參數 :

type: 資源類型,可選:
    專輯:"album",
    電臺:"dj"
    歌曲:"music",
    MV:"mv",
    歌單:"playlist",
    視頻:"video",
    動態:"event"
resourceId: 資源ID
複製代碼

接口地址 :

/comment/resource/:resourceId/comments
複製代碼

可選參數 :

limit: 取出評論數量 , 默認爲 20
offset: 偏移數量 , 用於分頁 , 如 :( 評論頁數 -1)*20, 其中 20 爲 limit 的值
beforeTime: 分頁參數,取上一頁最後一項的time,獲取下一頁數據(獲取超過5000條評論的時候須要用到)
複製代碼

調用例子 :

GET /comment/resource/:resourceId/hot/comments

@param {
    resourceId: "***"
}
@query
{
    limit?: 30,
    offset?: 1,
    type: "music",
    beforeTime: 0
}
複製代碼

5.2 獲取資源熱門評論

說明 : 調用此接口 , 可獲取資源熱門評論

必選參數 :

type: 資源類型,可選:
    專輯:"album",
    電臺:"dj"
    歌曲:"music",
    MV:"mv",
    歌單:"playlist",
    視頻:"video",
    動態:"event"
resourceId: 資源ID
複製代碼

接口地址 :

/comment/resource/:resourceId/hot/comments
複製代碼

可選參數 :

limit: 取出評論數量 , 默認爲 20
offset: 偏移數量 , 用於分頁 , 如 :( 評論頁數 -1)*20, 其中 20 爲 limit 的值
beforeTime: 分頁參數,取上一頁最後一項的time,獲取下一頁數據(獲取超過5000條評論的時候須要用到)
複製代碼

調用例子 :

GET /comment/resource/:resourceId/hot/comments

@param {
    resourceId: "***"
}
@query
{
    limit?: 30,
    offset?: 1,
    type: "music",
    beforeTime: 0
}
複製代碼

5.3 獲取資源雲村熱評

說明 : 調用此接口 , 可獲取資源雲村熱評

必選參數 :

複製代碼

接口地址 :

/comment/hotwall/list
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / comment / hotwall / list;
複製代碼

5.4 點贊 | 取消點贊 評論

說明 : 調用此接口 , 可點贊 | 取消點贊 評論

必選參數 :

resourceId: 資源ID
actionType: 操做類型,點贊:"like",取消點贊:"unlike"
commentId: 評論ID
type: 資源類型,可選:
    專輯:"album",
    電臺:"dj"
    歌曲:"music",
    MV:"mv",
    歌單:"playlist",
    視頻:"video",
    動態:"event"
複製代碼

接口地址 :

/comment/resource/:resourceId/like/:actionType
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /comment/resource/:resourceId/like/:actionType

@param
{
    resourceId: "***",
    actionType: "like"
}
@body
{
   commentId: "***",
   type: "music"
}
複製代碼

5.5 發表資源評論

說明 : 調用此接口 , 可發表資源評論

必選參數 :

resourceId: 資源ID
content: 評論內容
type: 資源類型,可選:
    專輯:"album",
    電臺:"dj"
    歌曲:"music",
    MV:"mv",
    歌單:"playlist",
    視頻:"video",
    動態:"event"
複製代碼

接口地址 :

/comment/resource/:resourceId/comment/send
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /comment/resource/:resourceId/comment/send

@body
{
    resourceId: "***",
    content: "***",
    type: "music"
}
複製代碼

5.5 刪除資源評論

說明 : 調用此接口 , 可刪除資源評論

必選參數 :

resourceId: 資源ID
commentId: 評論ID
type: 資源類型,可選:
    專輯:"album",
    電臺:"dj"
    歌曲:"music",
    MV:"mv",
    歌單:"playlist",
    視頻:"video",
    動態:"event"
複製代碼

接口地址 :

/comment/resource/:resourceId/comment
複製代碼

可選參數 :

複製代碼

調用例子 :

DELETE /comment/resource/:resourceId/comment

@param
{
    resourceId: "***"
}
@body {
    commentId: "***",
    type: "music"
}
複製代碼

5.6 回覆資源評論

說明 : 調用此接口 , 可回覆資源評論

必選參數 :

resourceId: 資源ID
commentId: 評論ID
content: 評論內容
type: 資源類型,可選:
    專輯:"album",
    電臺:"dj"
    歌曲:"music",
    MV:"mv",
    歌單:"playlist",
    視頻:"video",
    動態:"event"
複製代碼

接口地址 :

/comment/resource/:resourceId/comment/:commentId/reply
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /comment/resource/:resourceId/comment/:commentId/reply

@param
{
    resourceId: "***",
    commentId: "***"
}
@body {
    content: "****",
    type: "music"
}
複製代碼

6.MV 模塊

6.1 獲取 MV 列表

說明 : 調用此接口 , 可獲取 MV 列表

必選參數 :

複製代碼

接口地址 :

/mv/list
複製代碼

可選參數 :

調用例子 :

GET /mv/list

@query
{
    area?: 0,
    type?: 0,
    order?: 0,
    offset?: 1,
    limit?: 30,
}
複製代碼

6.2 獲取 MV 詳情

說明 : 調用此接口 , 可獲取 MV 詳

必選參數 :

mvId: MV ID
複製代碼

接口地址 :

/mv/:mvId/detail
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /mv/:mvId/detail

@param
{
    mvId: "***"
}
複製代碼

6.3 獲取網易出品 MV

說明 : 調用此接口 , 可獲取網易出品 MV

必選參數 :

複製代碼

接口地址 :

/mv/exclusive/rcmd
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /mv/exclusive/rcmd

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

6.4 獲取最新 MV

說明 : 調用此接口 , 可獲取最新 MV

必選參數 :

複製代碼

接口地址 :

/mv/latest
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /mv/latest

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

6.5 收藏 | 取消收藏 MV

說明 : 調用此接口 , 可收藏 | 取消收藏 MV

必選參數 :

mvId: MV ID
actionType: 操做類型,收藏:"sub",取消收藏:"unsub"
複製代碼

接口地址 :

/mv/:mvId/sub/:actionType
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /mv/:mvId/sub/:actionType

@param
{
    mvId: "***",
    actionType: "sub"
}
複製代碼

6.6 獲取 MV 收藏列表

說明 : 調用此接口 , 獲取 MV 收藏列表

必選參數 :

複製代碼

接口地址 :

/mv/sublist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /mv/sublist

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

6.7 獲取 MV URL

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

mvId: MV ID
resolution: 分辨率,默認1080
複製代碼

接口地址 :

/mv/url
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /mv/url

@query
{
    mvId: "***",
    resolution?: 1080
}
複製代碼

7.電臺模塊

7.1 獲取電臺 banner

說明 : 調用此接口 , 可獲取電臺 banner

必選參數 :

複製代碼

接口地址 :

/dj/banner
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / dj / banner;
複製代碼

7.2 獲取電臺非熱門分類

說明 : 調用此接口 , 可獲取電臺非熱門分類

必選參數 :

複製代碼

接口地址 :

/dj/category/excludehot
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / dj / category / excludehot;
複製代碼

7.3 獲取電臺推薦分類

說明 : 調用此接口 , 可獲取電臺推薦分類

必選參數 :

複製代碼

接口地址 :

/dj/category/rec
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / dj / category / rec;
複製代碼

7.4 獲取電臺分類列表

說明 : 調用此接口 , 可獲取電臺分類列表

必選參數 :

複製代碼

接口地址 :

/dj/category/list
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / dj / category / list;
複製代碼

7.5 獲取熱門電臺

說明 : 調用此接口 , 可獲取熱門電臺

必選參數 :

複製代碼

接口地址 :

/dj/hot
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/hot

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

7.6 獲取付費電臺

說明 : 調用此接口 , 可獲取付費電臺

必選參數 :

複製代碼

接口地址 :

/dj/paygift
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/paygift

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

7.7 獲取電臺 24 小時節目榜

說明 : 調用此接口 , 可獲取電臺 24 小時節目榜

必選參數 :

複製代碼

接口地址 :

/dj/program/toplist/hours
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
複製代碼

調用例子 :

GET /dj/program/toplist/hours

@query
{
    limit?: 30
}
複製代碼

7.8 獲取電臺節目榜單

說明 : 調用此接口 , 可獲取電臺節目榜單

必選參數 :

複製代碼

接口地址 :

/dj/program/toplist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/program/toplist

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

7.9 獲取電臺節目列表

說明 : 調用此接口 , 可獲取電臺節目列表

必選參數 :

djId: 電臺ID
複製代碼

接口地址 :

/dj/:djId/program/list
複製代碼

可選參數 :

asc: 排序方式,默認爲 false (新 => 老 ) 設置 true 可改成 老 => 新
limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/:djId/program/list

@param
{
    djId: "***"
}
@query
{
    asc?: false,
    limit?: 30,
    offset?: 1
}
複製代碼

7.10 獲取分類熱門電臺

說明 : 調用此接口 , 可獲取分類熱門電臺

必選參數 :

categoryId: 分類ID
複製代碼

接口地址 :

/dj/category/:categoryId/djs
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/category/:categoryId/djs

@param
{
    categoryId: "***"
}
@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

7.11 精選分類電臺列表

說明 : 調用此接口 , 可獲取精選分類電臺列表

必選參數 :

typeId: 類型ID,數字
  有聲書: 10001,
  知識技能: 453050,
  商業財經: 453051,
  人文歷史: 11,
  外語世界: 13,
  親子寶貝: 14,
  創做|翻唱: 2001,
  音樂故事: 2,
  3D|電子: 10002,
  相聲曲藝: 8,
  情感調頻: 3,
  美文讀物: 6,
  脫口秀: 5,
  廣播劇: 7,
  二次元: 3001,
  明星作主播: 1,
  娛樂|影視: 4,
  科技科學: 453052,
  校園|教育: 4001,
  旅途|城市: 12,
複製代碼

接口地址 :

/dj/type/:typeId/rec/djs
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /dj/type/:typeId/rec/djs

@param
{
    typeId: 1
}
複製代碼

7.12 獲取推薦電臺

說明 : 調用此接口 , 可獲取推薦電臺

必選參數 :

複製代碼

接口地址 :

/dj/rec/djs
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET / dj / rec / djs;
複製代碼

7.13 訂閱 | 取消訂閱 電臺

說明 : 調用此接口 , 訂閱 | 取消訂閱 電臺

必選參數 :

djId: 電臺ID
actionType: 操做類型,訂閱:"sub" 取消訂閱:"unsub"
複製代碼

接口地址 :

/dj/:djId/sub/:actionType
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

POST /dj/:djId/sub/:actionType

@param
{
    djId: "***",
    actionType: "sub"
}
複製代碼

7.14 獲取訂閱電臺列表

說明 : 調用此接口 , 可獲取訂閱電臺列表

必選參數 :

複製代碼

接口地址 :

/dj/sublist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/sublist

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

7.15 獲取今日優選電臺

說明 : 調用此接口 , 可獲取今日優選電臺

必選參數 :

複製代碼

接口地址 :

/dj/totay/perfered
複製代碼

可選參數 :

offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/totay/perfered

@query
{
    offset?: 1
}
複製代碼

7.16 獲取 24 小時榜電臺

說明 : 調用此接口 , 可獲取 24 小時榜電臺

必選參數 :

複製代碼

接口地址 :

/dj/toplist/hours
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
複製代碼

調用例子 :

GET /dj/toplist/hours

@query
{
    limit?: 30
複製代碼

7.17 電臺新人榜

說明 : 調用此接口 , 可獲取電臺新人榜

必選參數 :

複製代碼

接口地址 :

/dj/toplist/newcomer
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/toplist/newcomer

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

7.18 付費精品

說明 : 調用此接口 , 可付費精品

必選參數 :

複製代碼

接口地址 :

/dj/toplist/pay
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
複製代碼

調用例子 :

GET /dj/toplist/pay

@query
{
    limit?: 30
}
複製代碼

7.19 流行熱榜

說明 : 調用此接口 , 可獲取流行熱榜

必選參數 :

複製代碼

接口地址 :

/dj/toplist/popular
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
複製代碼

調用例子 :

GET /dj/toplist/popular

@query
{
    limit?: 30
}
複製代碼

7.20 電臺熱榜

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

複製代碼

接口地址 :

/dj/toplist
複製代碼

可選參數 :

type:  榜單類型, 0 爲新晉電臺榜,1 爲熱門電臺榜,默認爲0
limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /dj/toplist

@query
{
    type: 0,
    limit?: 30,
    offset?: 1
}
複製代碼

7.21 獲取電臺節目詳情

說明 : 調用此接口 , 可獲取電臺節目詳情

必選參數 :

djId: 電臺ID
複製代碼

接口地址 :

/dj/:djId/program/detail
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /dj/:djId/program/detail

@param
{
    djId: "***"
}
複製代碼

7.22 獲取電臺詳情

說明 : 調用此接口 , 可獲取電臺詳情

必選參數 :

djId: 電臺ID
複製代碼

接口地址 :

/dj/:djId/detail
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /dj/:djId/detail

@param
{
    djId: "***"
}
複製代碼

8.排行榜模塊

8.1 專輯排行榜

說明 : 調用此接口 , 可獲取專輯排行榜

必選參數 :

複製代碼

接口地址 :

/top/album
複製代碼

可選參數 :

area: 'ALL' | 'ZH' | 'EA' | 'KR' | 'JP'
limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /top/album

@query
{
    area?: 'ZH',
    limit?: 30,
    offset?: 1
}
複製代碼

8.2 獲取熱門歌手

說明 : 調用此接口 , 獲取熱門歌手

必選參數 :

複製代碼

接口地址 :

/top/artist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /top/artist

@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

8.3 獲取新歌列表

說明 : 調用此接口 , 獲取新歌列表

必選參數 :

接口地址 :

/top/list
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /top/list

@query
{
    type: 0
}
複製代碼

8.4 獲取 MV 排行榜

說明 : 調用此接口 , 獲取 MV 排行榜

必選參數 :

複製代碼

接口地址 :

/top/mv
複製代碼

可選參數 :

調用例子 :

GET /top/mv

@query
{
    area: '華語',
    limit?: 30,
    offset?: 1
}
複製代碼

8.5 獲取高質量歌單排行榜

說明 : 調用此接口 , 獲取高質量歌單排行榜

必選參數 :

複製代碼

接口地址 :

/top/quality/playlist
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
lasttime: 分頁參數,取上一頁最後一個歌單的 updateTime 獲取下一頁數據,默認爲0
category: 分類
  可選類型: 所有,華語,歐美,韓語,日語,粵語,小語種,運動,ACG,影視原聲,流行,搖滾,後搖,古風,民謠,輕音樂,電子,器樂,說唱,古典,爵士
複製代碼

調用例子 :

GET /top/quality/playlist

@query
{
    category: '華語'
    limit?: 30,
    lasttime: 0,
}
複製代碼

8.6 獲取歌單排行榜

說明 : 調用此接口 , 獲取歌單排行榜

必選參數 :

複製代碼

接口地址 :

/top/playlist
複製代碼

可選參數 :

order: 可選值爲 'new''hot', 分別對應最新和最熱 , 默認爲 'hot'

category: ,分類," 華語 "" 古風 "" 歐美 "" 流行 ", 默認爲 "所有",可從歌單分類接口獲取(/playlist/category/list)

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /top/playlist

@query
{
    order?: 'new',
    category?: '古風'
    limit?: 30,
    offset?: 1
}
複製代碼

8.7 新歌榜單

說明 : 調用此接口 , 可獲取新歌榜單

必選參數 :

複製代碼

接口地址 :

top/songs
複製代碼

可選參數 :

area:'所有' | '華語' | '歐美' | '日本' | '韓國 複製代碼

調用例子 :

GET /top/songs

@query
{
    area: '華語'
}
複製代碼

8.8 獲取歌手榜

說明 : 調用此接口 , 獲取歌手榜

必選參數 :

複製代碼

接口地址 :

/toplist/artist
複製代碼

可選參數 :

type: 數字,可選1-4
  1: '華語',
  2: '歐美',
  3: '日本',
  4: '韓國',
複製代碼

調用例子 :

GET /toplist/artist

@query
{
   type: 2
}
複製代碼

8.9 全部榜單內容摘要

說明 : 調用此接口 , 獲取全部榜單內容摘要

必選參數 :

複製代碼

接口地址 :

/toplist/detail
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / toplist / detail;
複製代碼

8.10 榜單介紹

說明 : 調用此接口 , 可獲取榜單介紹

必選參數 :

複製代碼

接口地址 :

/toplist/introduction
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / toplist / introduction;
複製代碼

9.視頻模塊

9.1 獲取視頻信息

說明 : 調用此接口 , 獲取視頻信息

必選參數 :

videoId:視頻ID
複製代碼

接口地址 :

/video/:videoId/detail
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /video/:videoId/detail

@query
{
    videoId: "***"
}
複製代碼

9.2 獲取視頻分組列表

說明 : 調用此接口 , 獲取視頻分組列表

必選參數 :

複製代碼

接口地址 :

/video/group/list
複製代碼

可選參數 :

複製代碼

調用例子 :

GET /video/group/list;
複製代碼

9.3 獲取視頻分組下的視頻

說明 : 調用此接口 , 獲取視頻分組下的視頻

必選參數 :

groupId: 分組ID
複製代碼

接口地址 :

/video/group/videos
複製代碼

可選參數 :

resolution:分辨率,默認1080
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /video/group/videos

@query
{
    groupId: "***",
    resolution?: 1080,
    offset?: 1
}
複製代碼

9.4 收藏|取消收藏 視頻

說明 : 調用此接口 , 收藏|取消收藏 視頻

必選參數 :

videoId:視頻ID
actionType:操做類型,收藏:"sub",取消收藏: "unsub"
複製代碼

接口地址 :

/video/:videoId/sub/:actionType
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /video/:videoId/sub/:actionType

@query
{
    videoId: "***",
    actionType: "sub"
}
複製代碼

9.5 獲取視頻 URL

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

videoIds: 視頻ID,多個以逗號分隔
複製代碼

接口地址 :

/video/urls
複製代碼

可選參數 :

resolution:分辨率,默認1080
複製代碼

調用例子 :

GET /video/urls

@query
{
    videoIds: "***,***",
    resolution?: 1080
}
複製代碼

10.歌單模塊

10.1 獲取歌單分類列表

說明 : 調用此接口 , 獲取歌單分類列表

必選參數 :

複製代碼

接口地址 :

/playlist/category/list
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / playlist / category / list;
複製代碼

10.2 建立歌單

說明 : 調用此接口 , 建立歌單

必選參數 :

name: 歌單名字,
privacy:0 爲普通歌單,10 爲隱私歌單
複製代碼

接口地址 :

/playlist/create
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /playlist/create

@query
{
    name: "***",
    privacy: 0
}
複製代碼

10.3 刪除歌單

說明 : 調用此接口 , 刪除歌單

必選參數 :

pid:歌單ID
複製代碼

接口地址 :

/playlist/delete
複製代碼

可選參數 :

複製代碼

調用例子 :

DELETE /playlist/delete

@body
{
    pid: "***"
}
複製代碼

10.4 更新歌單描述

說明 : 調用此接口 , 更新歌單描述

必選參數 :

pid: 歌單ID
description: 描述
複製代碼

接口地址 :

/playlist/des/update
複製代碼

可選參數 :

複製代碼

調用例子 :

PUT /playlist/des/update

@query
{
    pid: "***",
    description: "***"
}
複製代碼

10.5 獲取歌單詳情

說明 : 調用此接口 , 獲取歌單詳情

必選參數 :

pid: 歌單ID
複製代碼

接口地址 :

/playlist/detail
複製代碼

可選參數 :

subNum:  歌單最近的 subNum 個收藏者
複製代碼

調用例子 :

GET /playlist/detail

@query
{
    pid: "****",
    subNum?: 10
}
複製代碼

10.6 獲取熱門歌單

說明 : 調用此接口 , 獲取熱門歌單

必選參數 :

複製代碼

接口地址 :

/playlist/hot
複製代碼

可選參數 :

複製代碼

調用例子 :

GET / playlist / hot;
複製代碼

10.7 更新歌單名

說明 : 調用此接口 , 更新歌單名

必選參數 :

pid: 歌單ID
name: 歌單名
複製代碼

接口地址 :

/playlist/name/update
複製代碼

可選參數 :

複製代碼

調用例子 :

PUT /playlist/name/update

@query
{
    pid: "***",
    name: "***"
}
複製代碼

10.8 訂閱 | 取消訂閱 歌單

說明 : 調用此接口 , 訂閱 | 取消訂閱 歌單

必選參數 :

pid: 歌單ID
actionType: 訂閱:'subscribe' 取消訂閱: 'unsubscribe'
複製代碼

接口地址 :

/playlist/:pid/sub/:actionType
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /playlist/:pid/sub/:actionType

@param
{
  pid: "***",
  actionType: "subscribe"
}
複製代碼

10.9 獲取歌單訂閱者

說明 : 調用此接口 , 獲取歌單訂閱者

必選參數 :

pid: 歌單ID
複製代碼

接口地址 :

/playlist/:pid/subscribers
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

GET /playlist/:pid/subscribers

@param
{
    pid: "***"
}
@query
{
    limit?: 30,
    offset?: 1
}
複製代碼

10.10 更新歌單標籤

說明 : 調用此接口 , 更新歌單標籤

必選參數 :

pid: 歌單ID
tags: 歌單標籤
複製代碼

接口地址 :

/playlist/:pid/tags/update
複製代碼

可選參數 :

limit : 返回數量 , 默認爲 30
offset : 偏移數量,用於分頁 ,  如 :( 頁數 -1)*30, 其中 30 爲 limit 的值,默認爲 0
複製代碼

調用例子 :

PUT /playlist/:pid/tags/update

@query
{
   pid: "***"
}
@body
{
    tags: "***"
}
複製代碼

10.11 添加歌單歌曲

說明 : 調用此接口 , 添加歌單歌曲

必選參數 :

pid: 歌單ID
songIds:歌曲ID數組
複製代碼

接口地址 :

/playlist/:pid/songs/add
複製代碼

可選參數 :

複製代碼

調用例子 :

POST /playlist/:pid/songs/add

{
   pid: "***"
}
@body
{
    songIds: ["***", "****"]
}
複製代碼

10.12 刪除歌單歌曲

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

pid: 歌單ID
songIds:歌曲ID數組
複製代碼

接口地址 :

/playlist/:pid/songs/del
複製代碼

可選參數 :

複製代碼

調用例子 :

DELETE /playlist/:pid/songs/del

@param
{
   pid: "***"
}
@body
{
    songIds: ["***", "****"]
}
複製代碼

10.13 更新歌單

說明 : 調用此接口 , 可獲取專輯信息

必選參數 :

pid: 歌單ID
description:描述
tags:標籤
複製代碼

接口地址 :

/playlist/:pid/update
複製代碼

可選參數 :

複製代碼

調用例子 :

PUT /playlist/:pid/update

{
   pid: "***"
}
@body
{
    description: "***",
    tags: "***"
}
複製代碼

結語

目前的實現的接口主要是這些,接口暫時未通過嚴格的測試,若有問題,請給我提 issue。貢獻出來,是方便你們一塊兒學習,禁止商用。下期預告,webpack 環境配置。關注個人微信公衆號,共同成長。

@author: WaterMan

相關文章
相關標籤/搜索