Files
zjpb.net/docs/API_DOC.md
Jowe 946e7197ae docs: 添加 API 文档和 OpenClaw Skill
- 新增 docs/API_DOC.md API 接口文档
- 新增 .claude/skills/zjpb-api.md OpenClaw 集成说明

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 23:16:57 +08:00

325 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ZJPB API 文档
## 概述
ZJPB 网站管理 API通过 API Key 进行认证,可用于外部工具(如 OpenClaw调用。
## 基础信息
- **Base URL**: `http://175.178.72.171`
- **认证方式**: Header (`X-API-Key`)
- **数据格式**: JSON
## 认证
所有 API 请求需要在 Header 中携带 API Key
```
X-API-Key: your-api-key-here
```
获取 API Key进入后台管理 → API密钥 → 创建新密钥
---
## API 接口
### 1. 获取网站列表
```http
GET /api/key/sites
```
**权限**: `site:read`
**响应示例**:
```json
{
"success": true,
"sites": [
{
"id": 1,
"code": "12345678",
"name": "网站名称",
"url": "https://example.com",
"slug": "example",
"logo": "/uploads/logo.png",
"short_desc": "简短描述",
"description": "详细介绍",
"features": "主要功能",
"news_keywords": "关键词",
"is_active": true,
"is_recommended": false,
"view_count": 100,
"tags": ["标签1", "标签2"],
"created_at": "2026-03-23 10:00:00"
}
]
}
```
---
### 2. 创建网站
```http
POST /api/key/sites
```
**权限**: `site:write`
**请求体**:
```json
{
"name": "网站名称",
"url": "https://example.com",
"slug": "example",
"logo": "/uploads/logo.png",
"short_desc": "简短描述",
"description": "详细介绍",
"features": "主要功能",
"news_keywords": "关键词",
"tags": ["标签1", "标签2"],
"is_active": true,
"is_recommended": false,
"sort_order": 0
}
```
**字段说明**:
| 字段 | 必填 | 说明 |
|------|------|------|
| name | 是 | 网站名称 |
| url | 是 | 网站 URL |
| slug | 否 | URL别名用于 SEO |
| logo | 否 | Logo 图片路径 |
| short_desc | 否 | 简短描述 |
| description | 否 | 详细介绍 |
| features | 否 | 主要功能 |
| news_keywords | 否 | 新闻关键词 |
| tags | 否 | 标签数组 |
| is_active | 否 | 是否启用,默认 true |
| is_recommended | 否 | 是否推荐,默认 false |
| sort_order | 否 | 排序权重,默认 0 |
**响应示例**:
```json
{
"success": true,
"site": {
"id": 2,
"code": "87654321",
"name": "网站名称",
"url": "https://example.com",
"slug": "example"
}
}
```
---
### 3. 获取单个网站
```http
GET /api/key/sites/{code}
```
**权限**: `site:read`
**参数**:
- `code`: 网站编码8位数字
**响应示例**:
```json
{
"success": true,
"site": {
"id": 1,
"code": "12345678",
"name": "网站名称",
"url": "https://example.com",
...
}
}
```
---
### 4. 更新网站
```http
PUT /api/key/sites/{code}
```
**权限**: `site:write`
**参数**:
- `code`: 网站编码8位数字
**请求体**: 同创建网站,可只传需要更新的字段
**响应示例**:
```json
{
"success": true,
"site": {
"id": 1,
"code": "12345678",
"name": "新名称",
...
}
}
```
---
### 5. 删除网站
```http
DELETE /api/key/sites/{code}
```
**权限**: `site:write`
**参数**:
- `code`: 网站编码8位数字
**响应示例**:
```json
{
"success": true,
"message": "网站已删除"
}
```
---
## 错误响应
```json
{
"success": false,
"message": "错误信息"
}
```
**状态码**:
- `200`: 成功
- `400`: 请求参数错误
- `401`: 认证失败(无效的 API Key
- `403`: 权限不足
- `404`: 资源不存在
- `500`: 服务器错误
---
## 使用示例
### cURL
```bash
# 获取网站列表
curl -X GET http://175.178.72.171/api/key/sites \
-H "X-API-Key: your-api-key"
# 创建网站
curl -X POST http://175.178.72.171/api/key/sites \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{
"name": "示例网站",
"url": "https://example.com",
"short_desc": "这是一个示例网站",
"tags": ["科技", "开源"]
}'
# 更新网站
curl -X PUT http://175.178.72.171/api/key/sites/12345678 \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{"name": "新名称"}'
# 删除网站
curl -X DELETE http://175.178.72.171/api/key/sites/12345678 \
-H "X-API-Key: your-api-key"
```
### Python
```python
import requests
API_KEY = "your-api-key"
BASE_URL = "http://175.178.72.171"
headers = {"X-API-Key": API_KEY}
# 获取网站列表
response = requests.get(f"{BASE_URL}/api/key/sites", headers=headers)
print(response.json())
# 创建网站
data = {
"name": "示例网站",
"url": "https://example.com",
"short_desc": "这是一个示例网站",
"tags": ["科技", "开源"]
}
response = requests.post(f"{BASE_URL}/api/key/sites", json=data, headers=headers)
print(response.json())
```
### JavaScript
```javascript
const API_KEY = "your-api-key";
const BASE_URL = "http://175.178.72.171";
const headers = { "X-API-Key": API_KEY };
// 获取网站列表
fetch(`${BASE_URL}/api/key/sites`, { headers })
.then(res => res.json())
.then(data => console.log(data));
// 创建网站
fetch(`${BASE_URL}/api/key/sites`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": API_KEY
},
body: JSON.stringify({
name: "示例网站",
url: "https://example.com",
short_desc: "这是一个示例网站"
})
})
.then(res => res.json())
.then(data => console.log(data));
```
---
## OpenClaw 集成
在 OpenClaw 中配置 API
1. **Base URL**: `http://175.178.72.171`
2. **Auth Header**: `X-API-Key`
3. **Auth Value**: 你创建的 API Key
创建网站的 prompt 示例:
```
你是一个网站发布助手。请根据用户提供的网站信息,调用 ZJPB API 创建网站。
网站信息:
- 名称:{name}
- URL{url}
- 描述:{description}
请调用 POST /api/key/sites 接口创建网站。
```
---
**最后更新**: 2026-03-23