跳转到内容
搜索文档

REST API

最后更新 查看 MarkdownAgent 设置

使用 REST API 创建 Artifacts 存储库,然后使用常规 Git 客户端推送和拉取内容。

在本指南结束时,您将在命名空间中创建一个存储库,读取该存储库的远程 URL,推送一次提交,并使用标准 Git 客户端克隆同一个存储库。

首先阅读命名空间,然后选择您要使用的命名空间名称。本指南在示例中使用 default

前提条件

您需要:

  • Artifacts 的访问权限。
  • 命名空间名称,例如 default
  • 具有 Artifacts > ReadArtifacts > Edit 权限的 Cloudflare API 令牌
  • 本地 git 客户端。
  • jq(如果您想自动提取响应字段)。

如果您想直接从 Worker 创建和管理存储库(而不是调用 REST API),请使用 Workers 快速入门指南

1. 导出环境变量

使用您的 Cloudflare 账户 ID 和 Artifacts API 令牌设置以下变量:

export ARTIFACTS_NAMESPACE="default"
export ARTIFACTS_REPO="starter-repo"
export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"
export ARTIFACTS_BASE_URL="https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/artifacts/namespaces/$ARTIFACTS_NAMESPACE"

每次运行本指南时,请使用唯一的存储库名称。

Artifacts 对 API 请求使用 Bearer 身份验证:

Authorization: Bearer $CLOUDFLARE_API_TOKEN

2. 创建存储库

选择以下方法之一在命名空间中创建存储库:

curl --request POST "$ARTIFACTS_BASE_URL/repos" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data "{\"name\":\"$ARTIFACTS_REPO\"}"

响应类似于以下内容:

{
	"result": {
		"id": "repo_123",
		"name": "starter-repo",
		"description": null,
		"default_branch": "main",
		"remote": "https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/default/starter-repo.git",
		"token": "art_v1_0123456789abcdef0123456789abcdef01234567?expires=1760000000"
	},
	"success": true,
	"errors": [],
	"messages": []
}

响应包含您在 Git 操作中需要的两个值:

  • remote:此存储库的 Git 远程 URL。<ACCOUNT_ID> 将是您实际的 Cloudflare 账户 ID。将此 URL 用于所有 Git 命令(git push、git clone)。请注意,此 URL 与您用来创建存储库的 REST API 的 URL 不同。
  • token:用于 Git 操作的短期凭证。该令牌将其过期时间以 Unix 时间戳形式直接编码在 ?expires= 后缀中。

result 中的 remotetoken 值复制到本地 shell 变量中:

export ARTIFACTS_REMOTE="<PASTE_RESULT_REMOTE_FROM_RESPONSE>"
export ARTIFACTS_TOKEN="<PASTE_RESULT_TOKEN_FROM_RESPONSE>"

捕获一次创建响应,并使用 jq 提取字段:

CREATE_RESPONSE=$(curl --silent --request POST "$ARTIFACTS_BASE_URL/repos" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data "{\"name\":\"$ARTIFACTS_REPO\"}")

export ARTIFACTS_REMOTE=$(printf '%s' "$CREATE_RESPONSE" | jq -r '.result.remote')
export ARTIFACTS_TOKEN=$(printf '%s' "$CREATE_RESPONSE" | jq -r '.result.token')

3. 再次获取存储库 URL

当您以后需要恢复远程 URL 时,获取存储库元数据:

curl "$ARTIFACTS_BASE_URL/repos/$ARTIFACTS_REPO" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
{
	"result": {
		"id": "repo_123",
		"name": "starter-repo",
		"description": null,
		"default_branch": "main",
		"created_at": "<ISO_TIMESTAMP>",
		"updated_at": "<ISO_TIMESTAMP>",
		"last_push_at": null,
		"source": null,
		"read_only": false,
		"remote": "https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/default/starter-repo.git"
	},
	"success": true,
	"errors": [],
	"messages": []
}

此端点仅返回存储库元数据。如果您需要新的存储库令牌,请使用 POST /tokens 生成一个。

4. 使用 git 推送您的第一次提交

创建一个本地存储库并将其推送到 Artifacts 远程端:

mkdir artifacts-demo
cd artifacts-demo
git init -b main
printf '# Artifacts demo\n' > README.md
git add README.md
git commit -m "Initial commit"
git remote add origin "$ARTIFACTS_REMOTE"
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" push -u origin main

这将使用推荐的基于标头(header)的形式,并使令牌保持在远程 URL 之外。

如果您在运行短期命令时需要包含身份验证信息的完整远程 URL,请改用令牌密钥(token secret)构建一个:

export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"
git push "$ARTIFACTS_AUTH_REMOTE" HEAD:main

5. 使用常规 git 客户端拉取存储库

将同一个存储库克隆到第二个目录中:

cd ..
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
git -C artifacts-clone log --oneline -1

您应该会看到您在上一步中推送的提交。

您也可以在运行短期命令时使用包含身份验证信息的完整远程 URL 进行克隆:

git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone

后续步骤

REST API 参考

查看每个存储库和令牌端点以及请求和响应示例。

最佳实践

有效地使用存储库隔离、最小权限令牌和命名空间隔离。

这篇文档对您有帮助吗?