📚 漫画管理 API

通过 HTTP API 管理漫画数据

漫画管理 API 提供了完整的 CRUD 操作,允许您通过 HTTP 请求获取、创建、更新和删除漫画数据。

📥 获取所有漫画

GET
/api/manga

响应:200 OK,返回漫画数组

[
  {
    "id": "1767042792152n1yc9qrf3",
    "resourceType": "manga",
    "name": "漫画名称",
    "description": "漫画描述",
    "author": "作者名",
    "tags": ["标签1", "标签2"],
    "resourcePath": "C:/Manga/MangaFolder",
    "coverPath": "C:/Manga/Covers/cover.jpg",
    "visitedSessions": [
      "2025-12-29T22:05:34.528Z",
      "2026-01-21T08:53:13.157Z"
    ],
    "addedDate": "2025-12-29T21:13:12.152Z",
    "rating": 5,
    "comment": "很好看",
    "isFavorite": true
  }
]

JavaScript

const res = await fetch('http://127.0.0.1:8765/api/manga')
const manga = await res.json()

Python

import requests
response = requests.get('http://127.0.0.1:8765/api/manga')
manga = response.json()

📥 获取单个漫画

GET
/api/manga/:id

参数:id - 漫画ID

响应:200 OK 返回漫画对象,不存在则 404

{
  "id": "1767042792152n1yc9qrf3",
  "resourceType": "manga",
  "name": "漫画名称",
  "description": "漫画描述",
  "author": "作者名",
  "tags": ["标签1", "标签2"],
  "resourcePath": "C:/Manga/MangaFolder",
  "coverPath": "C:/Manga/Covers/cover.jpg",
  "visitedSessions": [
    "2025-12-29T22:05:34.528Z",
    "2026-01-21T08:53:13.157Z"
  ],
  "addedDate": "2025-12-29T21:13:12.152Z",
  "rating": 5,
  "comment": "很好看",
  "isFavorite": true
}

JavaScript

const res = await fetch('http://127.0.0.1:8765/api/manga/1234567890abc')
const manga = await res.json()

Python

import requests
response = requests.get('http://127.0.0.1:8765/api/manga/1234567890abc')
manga = response.json()

➕ 创建漫画

POST
/api/manga

请求体:

{
  "name": "漫画名称",
  "description": "漫画描述",
  "author": "作者名",
  "tags": ["标签1", "标签2"],
  "resourcePath": "C:/Manga/MangaFolder",
  "coverPath": "C:/Manga/Covers/cover.jpg",
  "visitedSessions": [],
  "rating": 0,
  "comment": "",
  "isFavorite": false
}

响应:201 Created,返回创建的漫画对象

注意:ID 和 addedDate 会自动生成

JavaScript

const res = await fetch('http://127.0.0.1:8765/api/manga', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: '新漫画',
    author: '作者名',
    resourcePath: 'C:/Manga/NewManga'
  })
})
const createdManga = await res.json()

Python

import requests
new_manga = {
    'name': '新漫画',
    'author': '作者名',
    'resourcePath': 'C:/Manga/NewManga'
}
response = requests.post('http://127.0.0.1:8765/api/manga', json=new_manga)
created_manga = response.json()

✏️ 更新漫画

PUT
/api/manga/:id

参数:id - 漫画ID

请求体:要更新的字段(JSON 对象,只需传要修改的字段)

{
  "name": "更新后的漫画名",
  "description": "更新后的描述",
  "rating": 5,
  "tags": ["新标签1", "新标签2"],
  "isFavorite": true
}

响应:200 OK,返回更新后的漫画对象

注意:ID 和 addedDate 字段不允许修改

JavaScript

const res = await fetch('http://127.0.0.1:8765/api/manga/1234567890abc', {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: '更新后的漫画名' })
})
const updatedManga = await res.json()

Python

import requests
update_data = {'name': '更新后的漫画名'}
response = requests.put('http://127.0.0.1:8765/api/manga/1234567890abc', json=update_data)
updated_manga = response.json()

🗑️ 删除漫画

DELETE
/api/manga/:id

参数:id - 漫画ID

响应:204 No Content(成功)或 404 Not Found(不存在)

注意:删除操作不会删除本地漫画文件,仅移除管理器中的引用

JavaScript

await fetch('http://127.0.0.1:8765/api/manga/1234567890abc', { method: 'DELETE' })
// 成功返回 204,无响应体

Python

import requests
response = requests.delete('http://127.0.0.1:8765/api/manga/1234567890abc')
# 成功返回 204,无响应体

📊 漫画数据字段说明

漫画对象包含以下字段:

  • id - 漫画唯一标识符(自动生成,不可修改)
  • resourceType - 资源类型,固定为 "manga"
  • name - 漫画名称(必需)
  • description - 漫画描述
  • author - 作者
  • tags - 标签数组
  • resourcePath - 漫画文件夹路径
  • coverPath - 封面图片路径
  • visitedSessions - 访问会话时间数组(ISO 字符串数组,记录每次查看时间)
  • addedDate - 添加日期(自动生成,不可修改)
  • rating - 评分(1-5 或 0)
  • comment - 备注
  • isFavorite - 是否收藏

⚠️ 错误处理

API 使用标准的 HTTP 状态码:

  • 200 OK:请求成功
  • 201 Created:资源创建成功
  • 204 No Content:删除成功(无响应体)
  • 400 Bad Request:请求参数错误(如缺少必需字段)
  • 404 Not Found:资源不存在
  • 500 Internal Server Error:服务器内部错误

错误响应格式:

{
  "error": "错误信息"
}