Decorator Tham số
Trích xuất dữ liệu từ yêu cầu sử dụng decorator tham số.
Dữ liệu Yêu cầu
typescript
import {
Body, Query, Param, Headers, Req, Res,
Ip, Session, HostParam
} from '@galaxy-stack/orbit-common';
@Controller('users')
export class UsersController {
@Get(':id')
findOne(
@Param('id') id: string,
@Param() params: { id: string },
) {}
@Get()
findAll(
@Query('page') page: string,
@Query() query: { page: string; limit: string },
) {}
@Post()
create(
@Body() body: CreateUserDto,
@Body('name') name: string,
) {}
@Get()
withHeaders(
@Headers('authorization') auth: string,
@Headers() headers: Record<string, string>,
) {}
@Get()
withRequest(@Req() request: Request) {}
@Get()
withIp(@Ip() ip: string) {}
}@Body
Trích xuất nội dung yêu cầu.
typescript
@Post()
create(@Body() data: CreateUserDto) {}
@Post()
createWithValidation(@Body(ValidationPipe) data: CreateUserDto) {}
@Patch()
update(@Body('name') name: string) {}@Query
Trích xuất tham số truy vấn.
typescript
@Get()
search(@Query('q') query: string) {}
@Get()
paginate(
@Query('page', ParseIntPipe) page: number,
@Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number,
) {}@Param
Trích xuất tham số route.
typescript
@Get(':id')
findOne(@Param('id', ParseIntPipe) id: number) {}
@Get(':userId/posts/:postId')
getPost(
@Param('userId') userId: string,
@Param('postId') postId: string,
) {}@Headers
Trích xuất header yêu cầu.
typescript
@Get()
withAuth(@Headers('authorization') token: string) {}
@Get()
allHeaders(@Headers() headers: Record<string, string>) {}Decorator Tùy chỉnh
typescript
import { createParamDecorator, ExecutionContext } from '@galaxy-stack/orbit-common';
export const User = createParamDecorator(
(data: string, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
const user = request.user;
return data ? user?.[data] : user;
},
);
@Get('profile')
getProfile(@User() user: UserEntity) {}
@Get('profile')
getUserId(@User('id') userId: number) {}