| // src/api/torrent.js | |
| import { api } from './auth'; // 复用已有的axios实例 | |
| export const createTorrent = (torrentData, file) => { | |
| const formData = new FormData(); | |
| const token = localStorage.getItem('token'); | |
| // 添加文件 | |
| if (file) { | |
| formData.append('file', file); | |
| } | |
| // 通过这个方式就可以指定 ContentType 了 | |
| formData.append('body', JSON.stringify(torrentData)) | |
| console.log(formData); | |
| return api.post('/torrent', formData, { | |
| headers: { | |
| 'Content-Type': 'multipart/form-data', | |
| 'Authorization': `${token}` | |
| }, | |
| }); | |
| }; | |
| export const getTorrents = (page = 1, size = 5) => { | |
| return api.get('/torrent', { | |
| params: { page, size } | |
| }); | |
| }; | |
| export const getTorrentDetail = (torrentId) => { | |
| return api.get(`/torrent/${torrentId}`).then(response => { | |
| // 确保数据结构一致 | |
| if (response.data && response.data.data) { | |
| return { | |
| ...response, | |
| data: { | |
| ...response.data, | |
| data: { | |
| torrent: response.data.data.torrent, // 直接使用后端返回的格式化数据 | |
| comments: response.data.data.comments || [] | |
| } | |
| } | |
| }; | |
| } | |
| return response; | |
| }); | |
| }; | |
| export const likeTorrent = (torrentId) => { | |
| return api.post(`/torrent/${torrentId}/like`); | |
| }; | |
| export const addTorrentComment = (torrentId, commentData) => { | |
| return api.post(`/torrent/${torrentId}/comments`, commentData); | |
| }; | |
| export const searchTorrents = (keyword, page = 1, size = 5) => { | |
| return api.get('/torrent/search', { | |
| params: { keyword, page, size } | |
| }); | |
| }; |