Skip to content

Decorators Reference

Complete reference for all Orbit decorators.

Module Decorators

@Module

Defines a module with its dependencies.

typescript
@Module({
  imports: [OtherModule],      // Modules to import
  controllers: [MyController], // HTTP controllers
  providers: [MyService],      // Injectable providers
  exports: [MyService],        // Providers to share
})
class MyModule {}

@Global

Makes a module global (providers available everywhere).

typescript
@Global()
@Module({
  providers: [ConfigService],
  exports: [ConfigService],
})
class ConfigModule {}

Controller Decorators

@Controller

Declares a class as an HTTP controller.

typescript
@Controller()              // No prefix
@Controller('users')       // With prefix
@Controller({ path: 'users', host: 'admin.example.com' })

Route Decorators

HTTP Methods

typescript
@Get()                    // GET /
@Get('path')              // GET /path
@Get(':id')               // GET /:id

@Post()
@Put()
@Patch()
@Delete()
@Options()
@Head()
@All()                    // All methods

@HttpCode

Set response status code.

typescript
@Post()
@HttpCode(201)
create() {}

Set response header.

typescript
@Get()
@Header('Cache-Control', 'max-age=3600')
getData() {}

@Redirect

Redirect to another URL.

typescript
@Get('old')
@Redirect('/new', 301)
redirect() {}

@Render

Render a view template.

typescript
@Get()
@Render('index')
index() {
  return { title: 'Home' };
}

Parameter Decorators

Request Data

typescript
@Get(':id')
handler(
  @Param() params: object,           // All params
  @Param('id') id: string,           // Single param
  @Query() query: object,            // All query params
  @Query('page') page: string,       // Single query param
  @Body() body: object,              // Request body
  @Body('name') name: string,        // Body property
  @Headers() headers: object,        // All headers
  @Headers('auth') auth: string,     // Single header
) {}

Request/Response Objects

typescript
@Get()
handler(
  @Req() request: Request,
  @Res() response: Response,
) {}

Custom Decorators

typescript
const CurrentUser = createParamDecorator((data, ctx) => {
  const request = ctx.switchToHttp().getRequest();
  return request.user;
});

@Get()
handler(@CurrentUser() user: User) {}

Injectable Decorators

@Injectable

Marks a class as injectable.

typescript
@Injectable()
class MyService {}

@Injectable({ scope: Scope.REQUEST })
class RequestScopedService {}

@Injectable({ scope: Scope.TRANSIENT })
class TransientService {}

@Inject

Inject by token.

typescript
constructor(
  @Inject('CONFIG') config: Config,
  @Inject(DATABASE_TOKEN) db: Database,
) {}

@Optional

Mark dependency as optional.

typescript
constructor(
  @Optional() logger?: LoggerService,
) {}

Pipeline Decorators

@UseGuards

Apply guards.

typescript
@UseGuards(AuthGuard)
@UseGuards(AuthGuard, RolesGuard)

@UsePipes

Apply pipes.

typescript
@UsePipes(ValidationPipe)
@UsePipes(new ValidationPipe({ transform: true }))

@UseInterceptors

Apply interceptors.

typescript
@UseInterceptors(LoggingInterceptor)
@UseInterceptors(CacheInterceptor, TransformInterceptor)

@UseFilters

Apply exception filters.

typescript
@UseFilters(HttpExceptionFilter)

Metadata Decorators

@SetMetadata

Set custom metadata.

typescript
@SetMetadata('roles', ['admin'])
@Get()
adminOnly() {}

// Or create custom decorator
const Roles = (...roles: string[]) => SetMetadata('roles', roles);

@Roles('admin', 'moderator')
@Get()
handler() {}

Lifecycle Decorators

typescript
class MyService implements OnModuleInit, OnModuleDestroy {
  onModuleInit() {
    console.log('Module initialized');
  }

  onModuleDestroy() {
    console.log('Module destroyed');
  }
}

Versioning Decorators

@Version

Set API version.

typescript
@Controller('users')
class UserController {
  @Get()
  @Version('1')
  findAllV1() {}

  @Get()
  @Version('2')
  findAllV2() {}

  @Get()
  @Version(VERSION_NEUTRAL)
  findAllNeutral() {}
}

Released under the MIT License.