Malagu 框架提供一系列装饰器用于将请求相关的属性注入到控制器方法的参数里面。

@Param

获取路由变量,如请求是 /users/123 ,控制器的路由规则 /users/:id ,通过 @Param 装饰器就可以取到路由里面的 id 变量的值 123

取路由中的某一个变量:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string) {
  5. ...
  6. }
  7. }

取路由中的所有变量:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param() param: any) {
  5. const id = param.id;
  6. ...
  7. }
  8. }

@Query

获取请求查询参数,如请求是 /users?id=123 ,控制器的路由规则 /users ,通过 @Query 装饰器就可以取到请求查询参数里面的 id 参数的值 123

取请求查询参数中的某一个参数:

  1. @Controller('users')
  2. export class UserController {
  3. @Get()
  4. get(@Query('id') id: string) {
  5. ...
  6. }
  7. }

取请求查询参数中的所有参数:

  1. @Controller('users')
  2. export class UserController {
  3. @Get()
  4. get(@Query() query: any) {
  5. const id = query.id;
  6. ...
  7. }
  8. }

@Body

获取请求体。

取请求体中的某一个属性:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Body('foo') foo: string) {
  5. ...
  6. }
  7. }

取请求体中的所有属性:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Body() body: any) {
  5. ...
  6. }
  7. }

@Header

获取请求头。

取请求头中的某一个属性:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Header('Content-Type') contentType: string) {
  5. ...
  6. }
  7. }

取请求头中的所有属性:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Header() header: any) {
  5. ...
  6. }
  7. }

@Cookie

获取请求中的 Cookie 信息。

取请求中的某个 cookie 属性值:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Cookie('foo') foo: string) {
  5. ...
  6. }
  7. }

取请求中的所有 cookie 属性值:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Cookie() cookies: any) {
  5. const foo = cookies.get('foo'); // 也可以设置 cookie,cookies.set('foo', 'bar');
  6. ...
  7. }
  8. }

@Session

获取 Session 信息。

取请求中的某个 session 属性值:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Session('foo') foo: string) {
  5. ...
  6. }
  7. }

取请求中的所有 Session 属性值:

  1. @Controller('users')
  2. export class UserController {
  3. @Get(':id')
  4. get(@Param('id') id: string, @Session() session: any) {
  5. const foo = session.foo; // 也可以设置 session,session.foo = 'bar';
  6. ...
  7. }
  8. }