コンテンツにスキップ
use-cases / api-endpoints-on-demand / hero
EXEC · AI ネイティブ HTTP

オンデマンドで具現化するAPI エンドポイント

存在しない URL をヒットします。ワイルドカード exec スクリプトが呼び出しをキャッチし、LLM にハンドラーを書かせ、V8 サンドボックスで実行して、応答します。次の呼び出しはネイティブです — ルートは現在存在します。

exec ドキュメントを読む
use-cases / api-endpoints-on-demand / mechanism

URL がエンドポイントになる方法

Hoody Exec では、単一の TypeScript ファイルが任意の HTTP ルート(キャッチオールを含む)を提供できます。ai true では、スクリプトにはモデルハンドラーが注入されます。この 2 つを組み合わせると、リクエスト自体がハンドラーを書く契機になります。

ワイルドカード キャッチオール5 ステップ · 1 つの EXEC ファイル
01

リクエスト到着

GET /api/...

キャッチオール下のすべてのパスが 1 つのスクリプトにヒットします。

02

キャッチオール起動

[...slug].ts

metadata.parameters.slug がパスセグメントを運びます。

03

LLM がハンドラーを作成

generateText([ model ])

ai true はモデルを注入します。デフォルトは gemini-2.5-flash-lite です。

04

V8 サンドボックスで実行

isolate.eval

各スクリプトは独自の V8 isolate で実行され、信頼されたコード用に設計されています。

05

ルートを保存

fs.write to scripts/N

次の呼び出しは保存されたファイルに直接ヒットします。LLM なし、ネイティブスピード。

scripts/1/api/[...slug].ts
// @mode serverless
// @ai true
// @ai-model anthropic/claude-sonnet-4.5

const path = '/' + (metadata.parameters.slug ?? []).join('/');
const body = req.body ?? []'';

// Already saved? Hand off to the cached route.
const saved = await fs.exists('scripts/1/api' + path + '.ts');
if (saved) return fetch(path, [ method: metadata.method, body ]);

// Otherwise: ask for a handler, sandbox it, save it.
const [ text: handler ] = await generateText([
  model,
  system: 'Return a JS handler body. No imports. Return JSON.',
  prompt: `URL $[metadata.method] $[path]\nQuery $[JSON.stringify(metadata.query)]\nBody $[JSON.stringify(body)]`,
]);

const result = await isolate.eval(handler, [ req, res, fetch ]);
await fs.write('scripts/1/api' + path + '.ts', '// @mode serverless\n' + handler);
return result;

2 つの魔法のコメントと 1 つのルートへの戻り fetch。ワイルドカードは scripts/1/api/[...slug].ts に位置します。保存されたファイルは 1 つのディレクトリ上に配置されます。どちらも HTTP を話すため、スクリプトは生成中に独自の隣人を呼び出すことができます。

use-cases / api-endpoints-on-demand / angles

3 人の読者、1 つのパターン

メカニズムは、あなたが誰であるかに応じて 3 つの異なる方法で読み取られます。それらは同じ議論に編み込まれています。

怠け者のシニアエンジニア向け

年 2 回使うエンドポイントを書くのをやめる

管理者ツール、統合スクリプト、配線するべきレポート。必要な時に URL をヒットします。ハンドラーが表示されます。リロード時には保存済みです。

エージェント連携者向け

エージェントは API をプログラムしません、呼び出します

あなたのエージェントは存在しないルートが必要です。他の場所では、コードを書き、デプロイして、待って、呼び出します。ここでは、呼び出します。API はレスポンスと同時に到着します。

ラジカルな未来へ

API はもはや設計されません、発見されます

あなたが実際に呼び出したすべての URL は、あなたが出荷したすべてのエンドポイントの痕跡になったら、どうしますか?ドキュメントはアクセスログに縮小されます。仕様はトラフィックに縮小されます。

use-cases / api-endpoints-on-demand / punchline

ドキュメントがアクセスログになります。

月曜日に呼び出し火曜日にドキュメント化
access.log現在エンドポイント
  • 09:14GET/api/analytics/dashboardライブ
  • 11:02POST/api/exports/users.csvライブ
  • 13:48GET/api/admin/seats/auditライブ
  • 16:22POST/api/agent/tools/refundライブ
use-cases / api-endpoints-on-demand / replaces

これが置き換わるもの

開発者がエンドポイントをすばやく追加する必要があるときに選ぶパターン。それぞれはルートごとのスキャフォルド オーバーヘッドを請求します。ワイルドカードはそれを一度支払います。

  • AWS Lambda + API Gatewayエンドポイントごとのスキャフォルド、コールドスタート
  • Hasura / PostgREST autogenスキーマファースト、動作ではなくデータを返す
  • Vercel / Cloudflare functions1 回限りのエンドポイント、完全なデプロイサイクル
  • Express / Fastify scaffoldsルートごとのボイラープレート、ベビーシッターとしての実行時
  • Kong / Tyk plugins1 つのカスタムルールのための重いゲートウェイ
  • BFF マイクロサービスすべての UI の癖のためにメンテナンスするサービス
use-cases / api-endpoints-on-demand / cta

ドキュメントは計画ではなくなります。あなたが呼び出してきた URL の痕跡です。

exec ルーティングガイドを読む
use-cases / api-endpoints-on-demand / related

他のユースケースを読む