mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-02-11 18:14:43 +08:00
- Added LoginModal component for user login functionality. - Introduced API routes for user login, favorites, play records, and search history management. - Created JSON files for storing favorites, play records, and search history. - Updated API service to handle new endpoints and refactored data management to use API calls instead of local storage. - Adjusted data structures in types and services to align with new API responses.
314 lines
6.6 KiB
Markdown
314 lines
6.6 KiB
Markdown
### 服务器配置
|
||
|
||
- **接口地址**: `/api/server-config`
|
||
- **请求方法**: `GET`
|
||
- **功能说明**: 获取服务器配置信息
|
||
- **请求参数**: 无
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"SiteName": "string",
|
||
"StorageType": "string"
|
||
}
|
||
```
|
||
StorageType 可选值:
|
||
- "localstorage"
|
||
- "redis"
|
||
|
||
localstorage 方式部署的实例,收藏、播放记录和搜索历史无服务器同步,客户端自行处理即可
|
||
|
||
localstorage 方式部署的实例,登录时只需输入密码,无用户名
|
||
|
||
### 登录校验
|
||
|
||
- **接口地址**: `/api/login`
|
||
- **请求方法**: `POST`
|
||
- **功能说明**: 用户登录认证
|
||
- **请求参数**:
|
||
```json
|
||
{
|
||
"password": "string", // 必填,用户密码
|
||
"username": "string" // 选填,用户名(非 localStorage 模式时必填)
|
||
}
|
||
```
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"ok": true
|
||
}
|
||
```
|
||
- **错误码**:
|
||
- `400`: 参数错误或密码错误
|
||
- `500`: 服务器内部错误
|
||
|
||
response 会设置 set-cookie 的 auth 字段,用于后续请求的鉴权
|
||
|
||
后续的所有接口请求时都需要携带 auth 字段,否则会返回 401 错误
|
||
|
||
建议客户端保存用户输入的用户名和密码,在每次 app 启动时请求登录接口获取 cookie
|
||
|
||
### 视频搜索接口
|
||
|
||
- **接口地址**: `/api/search`
|
||
- **请求方法**: `GET`
|
||
- **功能说明**: 搜索视频内容
|
||
- **请求参数**:
|
||
- `q`: 搜索关键词(可选,不传返回空结果)
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"results": [
|
||
{
|
||
"id": "string", // 视频在源站中的 id
|
||
"title": "string", // 视频标题
|
||
"poster": "string", // 视频封面
|
||
"source": "string", // 视频源站 key
|
||
"source_name": "string", // 视频源站名称
|
||
"class": "string", // 视频分类
|
||
"year": "string", // 视频年份
|
||
"desc": "string", // 视频描述
|
||
"type_name": "string", // 视频类型
|
||
"douban_id": "string" // 视频豆瓣 id
|
||
}
|
||
]
|
||
}
|
||
```
|
||
- **错误码**:
|
||
- `500`: 搜索失败
|
||
|
||
### 视频详情接口
|
||
|
||
- **接口地址**: `/api/detail`
|
||
- **请求方法**: `GET`
|
||
- **功能说明**: 获取视频详细信息
|
||
- **请求参数**:
|
||
- `id`: 视频 ID(必填)
|
||
- `source`: 视频来源代码(必填)
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"id": "string", // 视频在源站中的 id
|
||
"title": "string", // 视频标题
|
||
"poster": "string", // 视频封面
|
||
"source": "string", // 视频源站 key
|
||
"source_name": "string", // 视频源站名称
|
||
"class": "string", // 视频分类
|
||
"year": "string", // 视频年份
|
||
"desc": "string", // 视频描述
|
||
"type_name": "string", // 视频类型
|
||
"douban_id": "string" // 视频豆瓣 id
|
||
}
|
||
```
|
||
- **错误码**:
|
||
- `400`: 缺少必要参数或无效参数
|
||
- `500`: 获取详情失败
|
||
|
||
### 豆瓣数据接口
|
||
|
||
- **接口地址**: `/api/douban`
|
||
- **请求方法**: `GET`
|
||
- **功能说明**: 获取豆瓣电影/电视剧数据
|
||
- **请求参数**:
|
||
- `type`: 类型,必须是 `tv` 或 `movie`(必填)
|
||
- `tag`: 标签,如 `热门`、`最新` 等(必填)
|
||
- `pageSize`: 每页数量,1-100 之间(可选,默认 16)
|
||
- `pageStart`: 起始位置,不能小于 0(可选,默认 0)
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取成功",
|
||
"list": [
|
||
{
|
||
"id": "string",
|
||
"title": "string",
|
||
"poster": "string",
|
||
"rate": "string"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
- **错误码**:
|
||
- `400`: 参数错误
|
||
- `500`: 获取豆瓣数据失败
|
||
|
||
### 用户数据接口
|
||
|
||
#### 收藏管理
|
||
|
||
- **接口地址**: `/api/favorites`
|
||
- **请求方法**: `GET` / `POST` / `DELETE`
|
||
- **功能说明**: 管理用户收藏
|
||
- **认证**: 需要认证
|
||
|
||
##### GET 请求 - 获取收藏
|
||
|
||
- **请求参数**:
|
||
- `key`: 收藏项 key(可选,格式为 `source+id`)
|
||
- **返回格式**:
|
||
|
||
```json
|
||
// 不带key参数时返回所有收藏
|
||
{
|
||
"source+id": {
|
||
"title": "string",
|
||
"poster": "string",
|
||
"source_name": "string",
|
||
"save_time": 1234567890
|
||
}
|
||
}
|
||
|
||
// 带key参数时返回单个收藏或null
|
||
{
|
||
"title": "string",
|
||
"poster": "string",
|
||
"source_name": "string",
|
||
"save_time": 1234567890
|
||
}
|
||
```
|
||
|
||
##### POST 请求 - 添加收藏
|
||
|
||
- **请求参数**:
|
||
```json
|
||
{
|
||
"key": "string", // 必填,格式为 source+id
|
||
"favorite": {
|
||
"title": "string",
|
||
"poster": "string",
|
||
"source_name": "string",
|
||
"save_time": 1234567890
|
||
}
|
||
}
|
||
```
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
##### DELETE 请求 - 删除收藏
|
||
|
||
- **请求参数**:
|
||
- `key`: 收藏项 key(可选,不传则清空所有收藏)
|
||
- **返回格式**:
|
||
|
||
```json
|
||
{
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
- **错误码**:
|
||
- `400`: 参数错误
|
||
- `401`: 未认证
|
||
- `500`: 服务器内部错误
|
||
|
||
#### 播放记录管理
|
||
|
||
- **接口地址**: `/api/playrecords`
|
||
- **请求方法**: `GET` / `POST` / `DELETE`
|
||
- **功能说明**: 管理用户播放记录
|
||
- **认证**: 需要认证
|
||
|
||
##### GET 请求 - 获取播放记录
|
||
|
||
- **请求参数**: 无
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"source+id": {
|
||
"title": "string",
|
||
"poster": "string",
|
||
"source_name": "string",
|
||
"index": 1,
|
||
"time": 1234567890
|
||
}
|
||
}
|
||
```
|
||
|
||
##### POST 请求 - 保存播放记录
|
||
|
||
- **请求参数**:
|
||
```json
|
||
{
|
||
"key": "string", // 必填,格式为 source+id
|
||
"record": {
|
||
"title": "string",
|
||
"poster": "string",
|
||
"source_name": "string",
|
||
"index": 1,
|
||
"time": 1234567890
|
||
}
|
||
}
|
||
```
|
||
- **返回格式**:
|
||
```json
|
||
{
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
##### DELETE 请求 - 删除播放记录
|
||
|
||
- **请求参数**:
|
||
- `key`: 播放记录 key(可选,不传则清空所有记录)
|
||
- **返回格式**:
|
||
|
||
```json
|
||
{
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
- **错误码**:
|
||
- `400`: 参数错误
|
||
- `401`: 未认证
|
||
- `500`: 服务器内部错误
|
||
|
||
#### 搜索历史管理
|
||
|
||
- **接口地址**: `/api/searchhistory`
|
||
- **请求方法**: `GET` / `POST` / `DELETE`
|
||
- **功能说明**: 管理用户搜索历史
|
||
- **认证**: 需要认证
|
||
|
||
##### GET 请求 - 获取搜索历史
|
||
|
||
- **请求参数**: 无
|
||
- **返回格式**:
|
||
```json
|
||
["搜索关键词1", "搜索关键词2"]
|
||
```
|
||
|
||
##### POST 请求 - 添加搜索历史
|
||
|
||
- **请求参数**:
|
||
```json
|
||
{
|
||
"keyword": "string" // 必填,搜索关键词
|
||
}
|
||
```
|
||
- **返回格式**:
|
||
```json
|
||
["搜索关键词1", "搜索关键词2"]
|
||
```
|
||
|
||
##### DELETE 请求 - 删除搜索历史
|
||
|
||
- **请求参数**:
|
||
- `keyword`: 要删除的关键词(可选,不传则清空所有历史)
|
||
- **返回格式**:
|
||
|
||
```json
|
||
{
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
- **错误码**:
|
||
- `400`: 参数错误
|
||
- `401`: 未认证
|
||
- `500`: 服务器内部错误
|