一个为 Typecho 1.3+ 设计的轻量级 RESTful API 插件。 支持文章发布、文章查询、评论获取、博客信息查询、分类与标签获取、备份操作等功能。 非常适合与外部前端、移动 App、自动化脚本对接。
| 功能 | 接口方法 (method) |
说明 |
|---|---|---|
| 获取文章列表 | getarticle |
按页返回已发布文章 |
| 发布文章 | release |
通过 API 发布新文章(支持分类和标签) |
| 获取评论 | getcomments |
获取指定文章的评论列表 |
| 获取站点信息 | getbloginfo |
返回网站标题、描述、主题、统计等 |
| 获取全部标签 | getalltags |
列出站点所有标签 |
| 获取全部分类 | getallcategories |
列出所有分类 |
| 搜索文章 | search |
按关键字搜索文章 |
| 备份数据库 | backup_db |
备份 Typecho 数据库 |
| 备份文件 | backup_files |
备份网站文件 |
| 备份全部 | backup_all |
同时备份数据库和文件 |
| 删除备份 | delete_backups |
删除旧备份 |
| 获取分类下文章 | getcategoryposts |
按分类名获取文章列表 |
| 删除文章 | delete |
删除指定文章 |
- 将插件文件上传到 Typecho 的插件目录:
text
/usr/plugins/
- 解压后目录结构如下:
text
/usr/plugins/Api/
├── Plugin.php
├── Action.php
└── README.md
- 确保权限正确(非常重要):
bash
chmod -R 755 /usr/plugins/Api
- 登录 Typecho 后台 → 控制台 → 插件管理,启用 Api 插件。
- 点击 "设置" 按钮进行配置。
在后台配置页面可以设置以下选项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
| 访问 Token | 654321 | 每次访问 API 时必须携带此 Token 参数,否则返回 access denied |
| 是否启用备份功能 | 启用 | 允许通过 API 执行数据库和文件备份 |
| 文章默认作者 ID | 1 | 调用 release 方法发布文章时使用的作者 ID |
所有 API 调用都需要提供正确的 token 参数。
示例:
text
https://yourdomain.com/index.php/api?token=654321&method=getarticle&page=1&pageSize=10
若 token 不匹配,将返回:
json
{
"success": false,
"message": "access denied"
}
text
GET /index.php/api?token=654321&method=getarticle&page=1&pageSize=5
返回:
json
{
"success": true,
"data": [
{
"cid": 10,
"title": "Hello Typecho",
"slug": "hello-typecho",
"created": "2025-10-10 21:30:00",
"authorId": 1,
"tags": ["Typecho", "API"],
"summary": "Typecho 插件开发示例..."
}
],
"pagination": {
"total": 32,
"page": 1,
"pageSize": 5
}
}
text
POST /index.php/api?token=654321&method=release
POST 参数:
| 参数名 | 说明 |
|---|---|
| title | 文章标题(必需) |
| content | 文章内容(HTML/Markdown)(必需) |
| slug | 可选,固定链接名 |
| tags | 可选,用逗号分隔的标签名 |
| categories | 可选,用逗号分隔的分类名 |
返回:
json
{
"success": true,
"message": "文章发布成功(分类已生效)",
"cid": 35,
"slug": "article-slug"
}
text
GET /index.php/api?token=654321&method=getcomments&cid=10
返回:
json
{
"success": true,
"data": [
{
"coid": 1,
"author": "访客",
"content": "评论内容",
"created": "2025-10-10 21:30:00",
"parent": 0
}
]
}
text
GET /index.php/api?token=654321&method=getbloginfo
返回:
json
{
"success": true,
"data": {
"title": "我的博客",
"description": "分享与记录",
"keywords": "博客,技术",
"theme": "default",
"siteUrl": "https://example.com",
"timezone": "Asia/Shanghai",
"charset": "UTF-8",
"postCount": 42
}
}
text
GET /index.php/api?token=654321&method=getallcategories
返回:
json
{
"success": true,
"data": [
{
"name": "技术",
"slug": "tech",
"post_count": 15
}
]
}
text
GET /index.php/api?token=654321&method=getcategoryposts&category=技术&page=1&pageSize=10
text
GET /index.php/api?token=654321&method=search&keyword=Typecho&page=1&pageSize=10
text
GET /index.php/api?token=654321&method=backup_db
GET /index.php/api?token=654321&method=backup_files
GET /index.php/api?token=654321&method=backup_all
若未启用备份功能或无权限,将返回错误。
| 文件 | 作用 |
|---|---|
| Plugin.php | 插件主类,负责注册路由与配置项 |
| Action.php | 核心逻辑,处理所有 API 请求 |
| README.md | 插件说明文档 |
- ✅ 完全兼容 Typecho 1.3+ 版本
- ✅ 修复文章发布功能,支持分类和标签
- ✅ 解决
Typecho_Common::slug()方法不存在问题 - ✅ 解决
Typecho_Db_Expression类不存在问题 - ✅ 优化数据库操作,使用更兼容的方法
- ✅ 改进错误处理和响应信息
- 初始发布版本
- 基础 API 功能支持
- 插件名称:Api
- 作者:Richard
- 版本:1.2.0
- 兼容性:Typecho 1.3+
- 支持环境:PHP 7.4 ~ 8.3
- 项目地址:https://github.com/Coder-Soder/Typecho-Api
Q: 启用插件后后台不显示?
A: 请检查权限:chmod -R 755 /usr/plugins/Api
Q: 访问 /api 提示 access denied? A: 请确认 token 设置正确,或在插件设置页重新保存。
Q: 发布文章时分类不生效? A: 请确保分类名称正确,且使用逗号分隔多个分类。
Q: Nginx 未生效? A: 如果你使用自定义 root 目录,请确保 Typecho 的 index.php 能正常重写请求。或者,将插件版本的 API 方式替代旧的 /api.php 文件访问。
Q: 在 Typecho 1.3 中遇到类不存在错误? A: v1.2.0 已完全修复 Typecho 1.3+ 的兼容性问题,请更新到最新版本。
本插件遵循 MIT License 协议自由使用与修改。