InversifyHttpAdapter
The base class all HTTP adapters extend (Express 4/5, Fastify, Hono, etc.). It wires controllers, guards, pipes, middleware, and interceptors into a working HTTP server. You generally consume its public methods from an adapter instance; if you are building a new adapter, implement the protected abstract methods described below.
Type parameters
class InversifyHttpAdapter<
  TRequest,
  TResponse,
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  TNextFunction extends (err?: any) => Promise<void> | void,
  TResult,
  TOptions extends HttpAdapterOptions = HttpAdapterOptions,
>
- TRequest: Native request type from the underlying framework (e.g.,- express.Request,- FastifyRequest,- HonoRequest).
- TResponse: Native response type from the underlying framework (e.g.,- express.Response,- FastifyReply,- Context).
- TNextFunction: Native “next” function type for chaining handlers.
- TResult: Adapter-specific return type for handlers and replies.
- TOptions: Adapter options shape. Defaults to- HttpAdapterOptions.
Constructor
constructor(
  container: Container,
  defaultHttpAdapterOptions: RequiredOptions<TOptions>,
  httpAdapterOptions: TOptions | undefined,
  awaitableRequestMethodParamTypes?: Iterable<RequestMethodParameterType> | undefined,
)
Creates an adapter instance bound to a DI container. Adapters typically invoke this from their subclass constructor and then expose a build() method that prepares the server.
- container: The Inversify container that holds controllers, guards, pipes, middleware, interceptors, and filters.
- defaultHttpAdapterOptions: The baseline options; merged with- httpAdapterOptions.
- httpAdapterOptions: Optional overrides. If- loggeris not- false, route mappings will be logged on build.
- awaitableRequestMethodParamTypes: Parameter types that should be awaited when building controller method arguments (e.g., when a parameter is resolved asynchronously). See parameter decorators under Controller.
httpAdapterOptions can be use to provide a custom logger by setting the logger property to an object that implements the Logger interface from @inversifyjs/logger. This allows you to integrate your own logging solution with the adapter's logging mechanism.
Refer to the logger page for more details on how to implement and use a custom logger.
Public methods
applyGlobalMiddleware
applyGlobalMiddleware(
  ...middlewareList: (Newable<Middleware> | ApplyMiddlewareOptions)[]
): void
Registers global middleware to run for every route.
- middlewareList: Either middleware classes or a structured object with- preHandlerMiddlewareListand- postHandlerMiddlewareListto control the phase. See Middleware.
Notes:
- Must be called before the server is built; calling it after build()throws an error.
- Pre-handler middleware run before the controller handler (after guards); post-handler middleware run after the handler.
useGlobalFilters
useGlobalFilters(
  ...errorFilterList: Newable<ErrorFilter>[]
): void
Registers global error filters. When a handler, guard, pipe, middleware, or interceptor throws, the adapter looks up the most specific filter whose handled Error type matches the thrown error (by walking the prototype chain), or a catch-all filter bound to null if provided.
- errorFilterList: Error filter classes to register globally.
Behavior:
- If no filter handles the error, an InternalServerErrorresponse is produced unless the error itself is anErrorHttpResponse, which is sent as-is.
applyGlobalGuards
applyGlobalGuards(
  ...guardList: Newable<Guard<TRequest>>[]
): void
Registers global guards that run before middleware and route handlers. See Guard.
- guardList: Guard classes to evaluate for every request.
Notes:
- Must be called before the server is built; calling it after build()throws an error.
- If any guard returns false, a403 Forbiddenis returned (unless the guard throws a specificErrorHttpResponse).
useGlobalInterceptors
useGlobalInterceptors(
  ...interceptorList: Newable<Interceptor<TRequest, TResponse>>[]
): void
Registers global interceptors that wrap route execution. Interceptors can run logic before and after the handler and may transform the handler result. See Interceptor.
- interceptorList: Interceptor classes to apply globally.
Notes:
- Must be called before the server is built; calling it after build()throws an error.
useGlobalPipe
useGlobalPipe(
  ...pipeList: (Newable<Pipe> | Pipe)[]
): void
Registers global pipes that transform/validate controller method parameters immediately after extraction. See Pipe.
- pipeList: Pipe classes or instances. Instances are used as provided; classes are resolved from the container per request.
Order of execution:
- Global pipes run before parameter-level pipes declared via parameter decorators (e.g., @Body(ParseNumberPipe)).
build
build(): Promise<unknown>
Abstract. Implemented by concrete adapters to build and return the underlying HTTP server or framework instance.