Use Cases

Cloudflare Workers dengan Claude Code

Pelajari tentang cloudflare workers menggunakan Claude Code. Dilengkapi tips praktis dan contoh kode.

Cloudflare Workerspengembangan dengan Claude Code: 加速

Cloudflare Workers 、Cloudflare グローバルネットワーク上 JavaScript/TypeScript 実行 きるserverlessplatform.V8エンジン ベース dan し、cold startゼロ cepatなresponse 実現.Claude Code pemanfaatanすれば、Workers特有 APIやバインディング juga efisien 扱え.

Memulai Proyek

> Cloudflare Workers proyek buatkan.
> Honoframework dan D1database 使う構成 dengan 。
npm create cloudflare@latest my-worker -- --template=hello-world
cd my-worker
npm install hono
# wrangler.toml
name = "my-api"
main = "src/index.ts"
compatibility_date = "2024-12-01"

[[d1_databases]]
binding = "DB"
database_name = "my-database"
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

[[kv_namespaces]]
binding = "CACHE"
id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

[[r2_buckets]]
binding = "STORAGE"
bucket_name = "my-bucket"

Honoを使ったAPIimplementasi

> Honoframework dengan CRUD API buatkan.
> D1database dan integrasi implementasikan juga.
// src/index.ts
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import { jwt } from 'hono/jwt';

type Bindings = {
  DB: D1Database;
  CACHE: KVNamespace;
  STORAGE: R2Bucket;
  JWT_SECRET: string;
};

const app = new Hono<{ Bindings: Bindings }>();

app.use('/api/*', cors());

// artikeldaftar
app.get('/api/posts', async (c) => {
  const { results } = await c.env.DB.prepare(
    'SELECT * FROM posts ORDER BY created_at DESC LIMIT 20'
  ).all();

  return c.json({ posts: results });
});

// artikelpembuatan
app.post('/api/posts', async (c) => {
  const { title, content } = await c.req.json();

  const result = await c.env.DB.prepare(
    'INSERT INTO posts (title, content, created_at) VALUES (?, ?, datetime())'
  )
    .bind(title, content)
    .run();

  // cache クリア
  await c.env.CACHE.delete('posts:latest');

  return c.json({ id: result.meta.last_row_id }, 201);
});

// gambarupload(R2)
app.post('/api/upload', async (c) => {
  const formData = await c.req.formData();
  const file = formData.get('file') as File;

  if (!file) {
    return c.json({ error: 'File required' }, 400);
  }

  const key = `uploads/${Date.now()}-${file.name}`;
  await c.env.STORAGE.put(key, file.stream(), {
    httpMetadata: { contentType: file.type },
  });

  return c.json({ key, url: `/api/files/${key}` });
});

export default app;

マイグレーション D1database

-- migrations/0001_create_tables.sql
CREATE TABLE IF NOT EXISTS posts (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  title TEXT NOT NULL,
  content TEXT NOT NULL,
  slug TEXT UNIQUE,
  published BOOLEAN DEFAULT FALSE,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_posts_slug ON posts(slug);
CREATE INDEX idx_posts_published ON posts(published, created_at);
# マイグレーションの実行
npx wrangler d1 migrations apply my-database

# ローカル開発
npx wrangler d1 migrations apply my-database --local
npx wrangler dev

pemanfaatan KVcache

// src/cache.ts
export async function getCachedData<T>(
  kv: KVNamespace,
  key: string,
  fetcher: () => Promise<T>,
  ttl = 3600
): Promise<T> {
  const cached = await kv.get(key, 'json');
  if (cached) return cached as T;

  const data = await fetcher();
  await kv.put(key, JSON.stringify(data), { expirationTtl: ttl });
  return data;
}

// Usage example
app.get('/api/stats', async (c) => {
  const stats = await getCachedData(
    c.env.CACHE,
    'stats:daily',
    async () => {
      const { results } = await c.env.DB.prepare(
        'SELECT COUNT(*) as count FROM posts WHERE published = TRUE'
      ).all();
      return results[0];
    },
    300 // 5分cache
  );

  return c.json(stats);
});

Deploy dan Monitoring

# デプロイ
npx wrangler deploy

# ログの確認
npx wrangler tail

# シークレットの設定
npx wrangler secret put JWT_SECRET

Summary

Cloudflare Workers 充実 バインディング dan Claude Code 組み合わせれば、エッジ 動作 full-stackAPI efisien pembangunan bisa dilakukan.serverlessfungsipanduanエッジコンピューティング入門 juga bisa dijadikan referensi.

Untuk Cloudflare Workersの詳細, lihat Cloudflare Workers公式ドキュメント.

#Claude Code #Cloudflare Workers #edge computing #serverless #API
Gratis

PDF Gratis: Cheatsheet Claude Code dalam 5 Menit

Cukup masukkan emailmu dan kami akan langsung mengirim cheatsheet PDF A4 satu halaman.

Kami menjaga data pribadimu dengan aman dan tidak pernah mengirim spam.

Masa

Tentang Penulis

Masa

Engineer yang aktif menggunakan Claude Code. Mengelola claudecode-lab.com, media teknologi 10 bahasa dengan lebih dari 2.000 halaman.