INTEGRITY Dokumentace

Připojení k Workers a vazbám

Containers mají přístup k Workers bindings : KV, R2, D1, Durable Objects a další, a to prostřednictvím outbound handlery. Odchozí handler zachytává HTTP požadavky z kontejneru a běží uvnitř Workers runtime, kde jsou k dispozici všechny vaše nakonfigurované bindings.

Kontejner odešle běžný HTTP požadavek na virtuální hostname (například http://my.kv/some-key), a odchozí handler jej přeloží pomocí svázaného prostředku. Uvnitř kontejneru není potřeba žádné SDK ani klientská knihovna.

Používejte bindings v outbound handlerech

Definujte outboundByHost handler pro každý virtuální hostname. Daný env argument vám dává přístup ke každému bindingu deklarovanému v konfiguraci Wrangler.

export class MyContainer extends Container {}

MyContainer.outboundByHost = {
	"my.kv": async (request, env, ctx) => {
		const url = new URL(request.url);
		const key = url.pathname.slice(1);
		const value = await env.KV.get(key);
		return new Response(value);
	},
	"my.r2": async (request, env, ctx) => {
		const url = new URL(request.url);
		// Scope access to this container's ID
		const path = `${ctx.containerId}${url.pathname}`;
		const object = await env.R2.get(path);
		return new Response(object?.body ?? null, { status: object ? 200 : 404 });
	},
};

Kontejner volá http://my.kv/some-key a handler ho přeloží pomocí KV bindingu. Volání http://my.r2/file.png čte z R2, v rozsahu aktuální instance kontejneru.

Přístup ke stavu Durable Object

ctx argument zpřístupňuje containerId, což vám umožňuje pracovat s vlastním Durable Object kontejneru z odchozího handleru.

"get-state.do": async (request, env, ctx) => {
  const id = env.MY_CONTAINER.idFromString(ctx.containerId);
  const stub = env.MY_CONTAINER.get(id);
  // Assumes getStateForKey is defined on your DO
  return stub.getStateForKey(request.body);
},