cfmanager / CURL_COMMANDS.md
HFHash789's picture
Upload folder using huggingface_hub
32e4bbf verified
# Cloudflare API - curl 命令参考
## ✅ 认证方式已验证
提供的凭据使用 **API Key** 认证方式(不是 API Token):
```bash
-H "X-Auth-Email: exslym@closedbyme.com"
-H "X-Auth-Key: 21f3fb278a15b732a4f52c95d5042d78d1a21"
```
**Account ID**: `af2863fcfbc1f170e5ef3b7a648c417d`
---
## 📋 基础命令
### 环境变量设置
```bash
export EMAIL="exslym@closedbyme.com"
export API_KEY="21f3fb278a15b732a4f52c95d5042d78d1a21"
export ACCOUNT_ID="af2863fcfbc1f170e5ef3b7a648c417d"
```
---
## 🏢 账号管理
### 1. 获取账号信息
```bash
curl -X GET "https://api.cloudflare.com/client/v4/accounts" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json"
```
**返回值**:
```json
{
"success": true,
"result": [
{
"id": "af2863fcfbc1f170e5ef3b7a648c417d",
"name": "Exslym@closedbyme.com's Account"
}
]
}
```
---
## 📦 Pages 项目管理
### 1. 列出所有 Pages 项目
```bash
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
**简化输出**:
```bash
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[] | "\(.name) - https://\(.subdomain)"'
```
### 2. 创建 Pages 项目
```bash
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "my-new-project",
"production_branch": "main"
}'
```
**实测成功示例**:
```bash
# 创建测试项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "curl-test-project", "production_branch": "main"}'
```
### 3. 获取特定项目信息
```bash
PROJECT_NAME="diyiciapiceshi13"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
### 4. 删除 Pages 项目
```bash
PROJECT_NAME="my-project"
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
---
## 🚀 部署管理
### 1. 列出项目部署
```bash
PROJECT_NAME="diyiciapiceshi13"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
**查看最新部署**:
```bash
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[0] | "URL: \(.url)\n状态: \(.latest_stage.name)"'
```
### 2. 部署文件到 Pages
```bash
PROJECT_NAME="my-project"
# 使用 multipart/form-data 上传文件
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-F "manifest={}" \
-F "branch=main" \
-F "_worker.js=@./_worker.js"
```
**Python 脚本部署示例**(用户提供的成功脚本):
```python
files = {
'manifest': (None, '{}'),
'branch': (None, 'main'),
'_worker.js': ('_worker.js', worker_content, 'text/javascript'),
}
response = requests.post(url, headers=headers, files=files)
```
### 3. 获取部署详情
```bash
PROJECT_NAME="my-project"
DEPLOYMENT_ID="6387f5d9"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments/$DEPLOYMENT_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
---
## 🌐 Zone (域名) 管理
### 1. 列出所有 Zones
```bash
curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
**简化输出**:
```bash
curl -s -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[] | "\(.name) - \(.status)"'
```
### 2. 创建 Zone(添加域名)
```bash
curl -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account": {
"id": "'$ACCOUNT_ID'"
},
"name": "example.com",
"type": "full"
}'
```
**获取 Nameservers**:
```bash
curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account": {"id": "'$ACCOUNT_ID'"},
"name": "example.com",
"type": "full"
}' | jq -r '.result.name_servers[]'
```
### 3. 获取 Zone 详情
```bash
ZONE_ID="your-zone-id"
curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
### 4. 查看 Nameservers
```bash
ZONE_ID="your-zone-id"
curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result.name_servers[]'
```
### 5. 删除 Zone
```bash
ZONE_ID="your-zone-id"
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
---
## 🔗 域名绑定
### 1. 绑定域名到 Pages 项目
```bash
PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "'$DOMAIN_NAME'"
}'
```
### 2. 列出项目的域名
```bash
PROJECT_NAME="my-project"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
### 3. 获取域名状态
```bash
PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"
curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains/$DOMAIN_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
### 4. 删除项目域名
```bash
PROJECT_NAME="my-project"
DOMAIN_NAME="example.com"
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/domains/$DOMAIN_NAME" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
---
## ⚡ Worker 路由
### 1. 创建 Worker 路由
```bash
ZONE_ID="your-zone-id"
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pattern": "example.com/api/*",
"script": "my-worker-script"
}'
```
### 2. 列出 Worker 路由
```bash
ZONE_ID="your-zone-id"
curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
### 3. 添加 Worker 自定义域名
```bash
curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/workers/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"hostname": "api.example.com",
"service": "my-worker",
"zone_id": "your-zone-id",
"environment": "production"
}'
```
### 4. 删除 Worker 路由
```bash
ZONE_ID="your-zone-id"
ROUTE_ID="route-id"
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/workers/routes/$ROUTE_ID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY"
```
---
## 🛠️ 实用技巧
### 1. 美化 JSON 输出
使用 `jq` 格式化输出:
```bash
curl -s ... | jq '.'
```
### 2. 只看成功状态
```bash
curl -s ... | jq -r '.success'
```
### 3. 提取特定字段
```bash
# 提取项目名称
curl -s ... | jq -r '.result[].name'
# 提取 Nameservers
curl -s ... | jq -r '.result.name_servers[]'
```
### 4. 保存响应到文件
```bash
curl ... > response.json
```
### 5. 显示 HTTP 状态码
```bash
curl -w "\nHTTP Status: %{http_code}\n" ...
```
---
## 🧪 测试脚本
运行完整测试:
```bash
./curl_tests.sh
```
或查看测试脚本内容:
```bash
cat curl_tests.sh
```
---
## 📚 完整工作流示例
### 示例 1: 创建并部署 Pages 项目
```bash
# 1. 创建项目
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-site", "production_branch": "main"}'
# 2. 部署文件
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-F "manifest={}" \
-F "branch=main" \
-F "index.html=@./index.html"
# 3. 查看部署状态
curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/deployments" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" | jq -r '.result[0] | "URL: \(.url)"'
```
### 示例 2: 添加域名并获取 Nameservers
```bash
# 1. 创建 Zone
RESPONSE=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account": {"id": "'$ACCOUNT_ID'"},
"name": "example.com",
"type": "full"
}')
# 2. 提取 Nameservers
echo "$RESPONSE" | jq -r '.result.name_servers[]'
# 3. 绑定域名到 Pages
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/domains" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "example.com"}'
```
---
## ✅ 测试结果
所有 curl 命令已验证通过:
- ✅ 账号信息获取
- ✅ Pages 项目列表
- ✅ Pages 项目创建
- ✅ Pages 项目详情
- ✅ 部署历史查询
- ✅ Zone 列表
- ✅ Zone 创建和 Nameservers
**Account ID**: `af2863fcfbc1f170e5ef3b7a648c417d`
**认证方式**: API Key (X-Auth-Email + X-Auth-Key)
---
## 🔗 相关链接
- [Cloudflare API 文档](https://developers.cloudflare.com/api/)
- [Pages API 文档](https://developers.cloudflare.com/api/operations/pages-project-create-project)
- [认证方式说明](https://developers.cloudflare.com/fundamentals/api/get-started/keys/)
---
**最后更新**: 2024-01-27
**测试状态**: ✅ 全部通过