[ PROMPT_NODE_24432 ]
Workerd API 参考
[ SKILL_DOCUMENTATION ]
# Workerd API
## Worker 代码 (JS/TS)
### ES 模块 (推荐)
javascript
export default {
async fetch(request, env, ctx) {
const value = await env.KV.get("key"); // env 中的绑定
const response = await env.API.fetch(request); // 服务绑定
ctx.waitUntil(logRequest(request)); // 后台任务
return new Response("OK");
},
async adminApi(request, env, ctx) { /* 命名入口点 */ },
async queue(batch, env, ctx) { /* 队列消费者 */ },
async scheduled(event, env, ctx) { /* 定时任务处理器 */ }
};
### TypeScript 类型
**从 wrangler.toml 生成 (推荐):**
bash
wrangler types # 输出: worker-configuration.d.ts
**手动类型:**
typescript
interface Env {
API: Fetcher;
CACHE: KVNamespace;
STORAGE: R2Bucket;
ROOMS: DurableObjectNamespace;
API_KEY: string;
}
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise {
return new Response(await env.CACHE.get("key"));
}
};
**设置:**
bash
npm install -D @cloudflare/workers-types
// tsconfig.json
{"compilerOptions": {"types": ["@cloudflare/workers-types"]}}
### Service Worker 语法 (旧版)
javascript
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const value = await KV.get("key"); // 绑定作为全局变量
return new Response("OK");
}
### Durable Objects
javascript
export class Room {
constructor(state, env) { this.state = state; this.env = env; }
async fetch(request) {
const url = new URL(request.url);
if (url.pathname === "/increment") {
const value = (await this.state.storage.get("counter")) || 0;
await this.state.storage.put("counter", value + 1);
return new Response(String(value + 1));
}
return new Response("Not found", {status: 404});
}
}
### 服务间 RPC
javascript
// 调用方: env.AUTH.validateToken(token) 返回结构化数据
const user = await env.AUTH.validateToken(request.headers.get("Authorization"));
// 被调用方: 导出返回数据的方法
export default {
async validateToken(token) { return {id: 123, name: "Alice"}; }
};
## Web 平台 API
### Fetch
- `fetch()`, `Request`, `Response`, `Headers`
- `AbortController`, `AbortSignal`
### Streams
- `ReadableStream`, `WritableStream`, `TransformStream`
- 字节流, BYOB 读取器
### Web Crypto
- `crypto.`