generated from Java-2025Fall/final-vibevault-template
58 lines
1.9 KiB
Java
58 lines
1.9 KiB
Java
|
|
package com.vibevault.controller;
|
|||
|
|
|
|||
|
|
import com.vibevault.dto.PlaylistCreateDTO;
|
|||
|
|
import com.vibevault.dto.PlaylistDTO;
|
|||
|
|
import com.vibevault.dto.SongCreateDTO;
|
|||
|
|
import com.vibevault.service.PlaylistService;
|
|||
|
|
import org.springframework.http.HttpStatus;
|
|||
|
|
import org.springframework.security.core.Authentication;
|
|||
|
|
import org.springframework.web.bind.annotation.*;
|
|||
|
|
|
|||
|
|
import java.util.List;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 歌单 REST 控制器
|
|||
|
|
*
|
|||
|
|
* 需要实现以下端点:
|
|||
|
|
* - GET /api/playlists - 获取所有歌单(公开)
|
|||
|
|
* - GET /api/playlists/{id} - 获取指定歌单(公开)
|
|||
|
|
* - POST /api/playlists - 创建歌单(需认证)
|
|||
|
|
* - POST /api/playlists/{id}/songs - 添加歌曲(需认证)
|
|||
|
|
* - DELETE /api/playlists/{playlistId}/songs/{songId} - 移除歌曲(需认证)
|
|||
|
|
* - DELETE /api/playlists/{id} - 删除歌单(需认证)
|
|||
|
|
*
|
|||
|
|
* [Advanced] 额外端点:
|
|||
|
|
* - GET /api/playlists/search?keyword=xxx - 搜索歌单
|
|||
|
|
* - POST /api/playlists/{id}/copy?newName=xxx - 复制歌单
|
|||
|
|
*
|
|||
|
|
* 提示:
|
|||
|
|
* - 使用 Authentication 参数获取当前用户名:authentication.getName()
|
|||
|
|
* - 使用 @ResponseStatus 设置正确的 HTTP 状态码
|
|||
|
|
*/
|
|||
|
|
@RestController
|
|||
|
|
@RequestMapping("/api/playlists")
|
|||
|
|
public class PlaylistController {
|
|||
|
|
|
|||
|
|
private final PlaylistService playlistService;
|
|||
|
|
|
|||
|
|
public PlaylistController(PlaylistService playlistService) {
|
|||
|
|
this.playlistService = playlistService;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TODO: 实现 GET /api/playlists
|
|||
|
|
|
|||
|
|
// TODO: 实现 GET /api/playlists/{id}
|
|||
|
|
|
|||
|
|
// TODO: 实现 POST /api/playlists (状态码 201)
|
|||
|
|
|
|||
|
|
// TODO: 实现 POST /api/playlists/{id}/songs (状态码 201)
|
|||
|
|
|
|||
|
|
// TODO: 实现 DELETE /api/playlists/{playlistId}/songs/{songId} (状态码 204)
|
|||
|
|
|
|||
|
|
// TODO: 实现 DELETE /api/playlists/{id} (状态码 204)
|
|||
|
|
|
|||
|
|
// TODO [Advanced]: 实现 GET /api/playlists/search?keyword=xxx
|
|||
|
|
|
|||
|
|
// TODO [Advanced]: 实现 POST /api/playlists/{id}/copy?newName=xxx (状态码 201)
|
|||
|
|
}
|