Skip to main content

Function: routeDORequest()

routeDORequest(request, env, options?): Promise<Response | undefined>

Defined in: route-do-request.ts:197

Routes requests to Durable Objects with support for authentication hooks and prefix matching.

A near drop-in replacement for Cloudflare's routeAgentRequest and PartyKit's routePartyRequest, with enhanced binding name matching flexibility and standard Cloudflare naming conventions.

URL Format: [/${prefix}]/${doBindingName}/${doInstanceNameOrId}[/path...]

Key Features:

  • Case-insensitive DO binding name matching (MY_DO matches my-do, MyDO, MyDo, etc.)
  • Supports both named instances and unique ID strings
  • Automatically detects 64-character hex strings and routes using idFromString()
  • Returns undefined if the request doesn't match (Hono convention)
  • Pre-request/connect hooks for authentication and Request enhancement
  • Comprehensive CORS support

Hook Behavior:

  • WebSocket requests (Upgrade: websocket) → calls onBeforeConnect only
  • Non-WebSocket requests → calls onBeforeRequest only

For complete documentation with examples, see https://lumenize.com/docs/routing/route-do-request

Parameters​

request​

Request

The incoming HTTP request to route

env​

any

Environment object containing DO bindings

options?​

RouteOptions = {}

Configuration options for routing and hooks

Returns​

Promise<Response | undefined>

Promise resolving to Response if request was handled, undefined if not matched

Throws​

When binding name is found but doInstanceNameOrId is missing

Throws​

When multiple DO bindings match the doBindingName segment