ローカル開発
本番環境にデプロイする前に、Dispatch Worker、user Worker、およびOutbound Workerをテストするために、開発とテストにはWranglerを使用できます。
ローカルモードでの wrangler dev によるプラットフォーム用ワーカーのサポートは実験的であり、将来的に変更される可能性があります。プラットフォーム用ワーカーをローカルで試すには、プレリリースブランチ wrangler@dispatch-namespaces-dev を使用してください。
npm create cloudflare@latest -- customer-worker-1yarn create cloudflare@latest customer-worker-1pnpm create cloudflare@latest customer-worker-1For setup, select the following options:
- For What would you like to start with?, choose
Hello Worldの例. - For Which template would you like to use?, choose
Hello World Worker. - For Which language do you want to use?, choose
JavaScript. - For Do you want to use git for version control?, choose
Yes. - For Do you want to deploy your application?, choose
No(we will be making some changes before deploying).
次に、新しく作成したディレクトリに移動します:
cd customer-worker-1customer-worker-1の src/index.js ファイルを更新します:
export default { async fetch(request) { // インターネットへのサブリクエストを作成 const response = await fetch("https://example.com"); return new Response( `ユーザーワーカーがfetchから "${await response.text()}" を取得しました`, ); },};customer-worker-1の wrangler.toml ファイルを更新し、dispatch namespaceを追加します:
# ... 上の他のコンテンツ ...
dispatch_namespace = "my-namespace"npm create cloudflare@latest -- dispatch-workeryarn create cloudflare@latest dispatch-workerpnpm create cloudflare@latest dispatch-workerFor setup, select the following options:
- For What would you like to start with?, choose
Hello Worldの例. - For Which template would you like to use?, choose
Hello World Worker. - For Which language do you want to use?, choose
JavaScript. - For Do you want to use git for version control?, choose
Yes. - For Do you want to deploy your application?, choose
No(we will be making some changes before deploying).
次に、新しく作成したディレクトリに移動します:
cd dispatch-workerdispatch-workerの src/index.js ファイルを更新します:
export default { async fetch(request, env) { // ユーザーワーカーを取得し、Outbound Workerがユーザーワーカーのサブリクエストをインターセプトする際に見るパラメータを指定 const customerScript = env.DISPATCH_NAMESPACE.get( "customer-worker-1", {}, { outbound: { paramCustomerName: "customer-1", }, }, ); // ユーザーワーカーを呼び出す return await customerScript.fetch(request); },};dispatch-workerの wrangler.toml ファイルを更新し、dispatch namespaceバインディングを追加します:
# ... 上の他のコンテンツ ...
[[dispatch_namespaces]]binding = "DISPATCH_NAMESPACE"namespace = "my-namespace"outbound = { service = "outbound-worker", parameters = ["paramCustomerName"] }npm create cloudflare@latest -- outbound-workeryarn create cloudflare@latest outbound-workerpnpm create cloudflare@latest outbound-workerFor setup, select the following options:
- For What would you like to start with?, choose
Hello Worldの例. - For Which template would you like to use?, choose
Hello World Worker. - For Which language do you want to use?, choose
JavaScript. - For Do you want to use git for version control?, choose
Yes. - For Do you want to deploy your application?, choose
No(we will be making some changes before deploying).
次に、新しく作成したディレクトリに移動します:
cd outbound-workeroutbound-workerの src/index.js ファイルを更新します:
export default { async fetch(request, env) { const { paramCustomerName } = env; // ディスパッチャーによって渡されたパラメータを使用して、このリクエストがどのユーザーのものであるかを知り // ユーザーワーカーにカスタムコンテンツを返す return new Response( `outboundによって ${paramCustomerName} のリクエストをインターセプトしました`, ); },};別々のターミナルで、各ワーカーのローカル開発セッションを開始します。
ディスパッチャーワーカーの場合:
cd dispatch-workernpx wrangler@dispatch-namespaces-dev dev --port 8600アウトバウンドワーカーの場合:
cd outbound-workernpx wrangler@dispatch-namespaces-dev dev --port 8601ユーザーワーカーの場合:
cd customer-worker-1npx wrangler@dispatch-namespaces-dev dev --port 8602ディスパッチャーワーカーにリクエストを送信します:
curl http://localhost:8600# -> ユーザーワーカーがfetchから "outboundによって customer-1 のリクエストをインターセプトしました" を取得しました