# 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 **测试状态**: ✅ 全部通过