添加了专辑详情页面的数据获取逻辑和布局,包括专辑封面、名称、艺术家、简介和曲目列表的展示。同时,更新了路由参数和 API 请求路径,以支持专辑详情的动态加载。
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import axios from 'axios'
|
|
|
|
const msrInstance = axios.create({
|
|
baseURL: 'https://monster-siren.hypergryph.com/api/',
|
|
})
|
|
|
|
export default {
|
|
async getSongs() {
|
|
const songs: {
|
|
data: ApiResponse
|
|
} = await msrInstance.get('songs')
|
|
if (songs.data.code !== 0) { throw new Error(`Cannot get songs: ${songs.data.msg}`) }
|
|
return { songs: songs.data.data as { list: SongList } }
|
|
},
|
|
async getSong(cid: string) {
|
|
const song: {
|
|
data: ApiResponse
|
|
} = await msrInstance.get(`song/${cid}`)
|
|
if (song.data.code!== 0) { return new Error(`Cannot get song: ${song.data.msg}`) }
|
|
return { song: song.data.data as Song }
|
|
},
|
|
async getAlbums() {
|
|
const albums: {
|
|
data: ApiResponse
|
|
} = await msrInstance.get('albums')
|
|
if (albums.data.code!== 0) { throw new Error(`Cannot get albums: ${albums.data.msg}`) }
|
|
return albums.data.data as AlbumList
|
|
},
|
|
async getAlbum(cid: string) {
|
|
const album: {
|
|
data: ApiResponse
|
|
} = await msrInstance.get(`album/${cid}/detail`)
|
|
if (album.data.code!== 0) { throw new Error(`Cannot get album: ${album.data.msg}`) }
|
|
const albumMeta: {
|
|
data: ApiResponse
|
|
} = await msrInstance.get(`album/${cid}/data`)
|
|
let data = album.data.data as Album
|
|
data.artistes = (albumMeta.data.data as Album).artistes
|
|
console.log(albumMeta)
|
|
return data
|
|
}
|
|
}
|