如果您直接使用 Workers Script Upload API 或 Version Upload API,multipart/form-data 上传需要您指定 metadata 部分。此元数据以 JSON 格式定义 Worker 的配置,类似于 wrangler.toml 文件。
{
"main_module": "main.js",
"bindings": [
{
"type": "plain_text",
"name": "MESSAGE",
"text": "Hello, world!"
}
],
"compatibility_date": "2021-09-14"
}以下属性可在顶层配置。
main_modulestringrequired- 包含 Worker 模块入口点的部分名称,将被执行。例如
main.js。
- 包含 Worker 模块入口点的部分名称,将被执行。例如
assetsobjectoptional- Worker 的资源(Asset) 配置。
configobjectoptional- html_handling 确定 HTML 内容请求的重定向和重写。
- not_found_handling 确定请求与静态资源不匹配时的响应。
jwt字段提供授权将资源附加到 Worker 的 token。
keep_assetsbooleanoptional- 指定是否应保留先前上传的 Worker 版本的资源;代替提供 completion token 使用。
-
bindingsarray[object] optional- 在 Worker 中暴露的绑定(binding)。
placementobjectoptional- Worker 的智能放置(Smart placement) 对象。
mode字段仅支持smart以实现自动放置。
compatibility_datestringoptional- 兼容日期(Compatibility Date),指示 Workers 运行时的目标支持。此日期之后的运行时向后不兼容修复不会影响此 Worker。强烈建议设置
compatibility_date,否则通过 API 上传时默认为任何标志生效之前的最旧兼容日期(2021-11-02)。
- 兼容日期(Compatibility Date),指示 Workers 运行时的目标支持。此日期之后的运行时向后不兼容修复不会影响此 Worker。强烈建议设置
-
compatibility_flagsarray[string] optional- 兼容性标志(Compatibility Flags),启用或禁用 Workers 运行时中的某些功能。用于启用即将推出的功能,或选择加入或退出未包含在
compatibility_date中的特定更改。
- 兼容性标志(Compatibility Flags),启用或禁用 Workers 运行时中的某些功能。用于启用即将推出的功能,或选择加入或退出未包含在
对于立即部署的上传,以下附加属性可在顶层配置。
-
migrationsarray[object] optional- 要应用的 Durable Objects 迁移。
logpushbooleanoptional- 是否为 Worker 开启 Logpush。
-
tail_consumersarray[object] optional- 将消费附加 Worker 日志的 Tail Workers。
-
tagsarray[string] optional- 用作此 Worker 标签的字符串列表。
annotationsobjectoptional- 此上传创建的 Worker 版本的注释对象。在 Version Upload API 上也可用。
workers/message指定版本的自定义消息。workers/tag指定版本的自定义标识符。
附加属性:Version Upload API
对于版本上传,以下附加属性可在顶层配置。
annotationsobjectoptional- 特定于 Worker 版本的注释对象。
workers/message指定版本的自定义消息。workers/tag指定版本的自定义标识符。workers/alias指定此版本的自定义别名。
Workers 可以使用绑定(binding) 与 Cloudflare Developer Platform 上的资源交互。请参阅以下 JSON 示例,了解如何在 metadata 部分添加绑定。
{
"bindings": [
{
"type": "ai",
"name": "<VARIABLE_NAME>"
},
{
"type": "analytics_engine",
"name": "<VARIABLE_NAME>",
"dataset": "<DATASET>"
},
{
"type": "assets",
"name": "<VARIABLE_NAME>"
},
{
"type": "browser_rendering",
"name": "<VARIABLE_NAME>"
},
{
"type": "d1",
"name": "<VARIABLE_NAME>",
"id": "<D1_ID>"
},
{
"type": "durable_object_namespace",
"name": "<VARIABLE_NAME>",
"class_name": "<DO_CLASS_NAME>"
},
{
"type": "hyperdrive",
"name": "<VARIABLE_NAME>",
"id": "<HYPERDRIVE_ID>"
},
{
"type": "kv_namespace",
"name": "<VARIABLE_NAME>",
"namespace_id": "<KV_ID>"
},
{
"type": "mtls_certificate",
"name": "<VARIABLE_NAME>",
"certificate_id": "<MTLS_CERTIFICATE_ID>"
},
{
"type": "plain_text",
"name": "<VARIABLE_NAME>",
"text": "<VARIABLE_VALUE>"
},
{
"type": "queue",
"name": "<VARIABLE_NAME>",
"queue_name": "<QUEUE_NAME>"
},
{
"type": "r2_bucket",
"name": "<VARIABLE_NAME>",
"bucket_name": "<R2_BUCKET_NAME>"
},
{
"type": "secret_text",
"name": "<VARIABLE_NAME>",
"text": "<SECRET_VALUE>"
},
{
"type": "service",
"name": "<VARIABLE_NAME>",
"service": "<SERVICE_NAME>",
"environment": "production"
},
{
"type": "vectorize",
"name": "<VARIABLE_NAME>",
"index_name": "<INDEX_NAME>"
},
{
"type": "version_metadata",
"name": "<VARIABLE_NAME>"
}
]
}