Malagu 框架提供一系列装饰器用于将请求相关的属性注入到控制器方法的参数里面。
@Param
获取路由变量,如请求是 /users/123
,控制器的路由规则 /users/:id
,通过 @Param
装饰器就可以取到路由里面的 id 变量的值 123
。
取路由中的某一个变量:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string) {
...
}
}
取路由中的所有变量:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param() param: any) {
const id = param.id;
...
}
}
@Query
获取请求查询参数,如请求是 /users?id=123
,控制器的路由规则 /users
,通过 @Query
装饰器就可以取到请求查询参数里面的 id 参数的值 123
。
取请求查询参数中的某一个参数:
@Controller('users')
export class UserController {
@Get()
get(@Query('id') id: string) {
...
}
}
取请求查询参数中的所有参数:
@Controller('users')
export class UserController {
@Get()
get(@Query() query: any) {
const id = query.id;
...
}
}
@Body
获取请求体。
取请求体中的某一个属性:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Body('foo') foo: string) {
...
}
}
取请求体中的所有属性:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Body() body: any) {
...
}
}
@Header
获取请求头。
取请求头中的某一个属性:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Header('Content-Type') contentType: string) {
...
}
}
取请求头中的所有属性:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Header() header: any) {
...
}
}
@Cookie
获取请求中的 Cookie 信息。
取请求中的某个 cookie 属性值:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Cookie('foo') foo: string) {
...
}
}
取请求中的所有 cookie 属性值:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Cookie() cookies: any) {
const foo = cookies.get('foo'); // 也可以设置 cookie,cookies.set('foo', 'bar');
...
}
}
@Session
获取 Session 信息。
取请求中的某个 session 属性值:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Session('foo') foo: string) {
...
}
}
取请求中的所有 Session 属性值:
@Controller('users')
export class UserController {
@Get(':id')
get(@Param('id') id: string, @Session() session: any) {
const foo = session.foo; // 也可以设置 session,session.foo = 'bar';
...
}
}