Use @Param('id') for route parameters, @Query('page') for query strings, @Body() for the request body, and @Headers('authorization') for headers. @Req() and @Res() give access to the raw Express/Fastify objects but should be avoided when possible as they couple code to the underlying platform.
@Param('key') — extracts a named route parameter.
@Query('key') — extracts a named query string parameter.
@Body() — extracts the full request body (or @Body('key') for a specific field).
@Headers('key') — extracts a specific request header.
@Req() — raw request object (Express/Fastify); avoid when possible.
@Res() — raw response object; switches to library-specific mode (use passthrough: true to avoid side effects).