Skip to content

Controller

控制器,来匹配路由

采用 ReftFull APi

Controller

接收一个字符串,来匹配路由

ts
@Controller('user')
export class UserController

这个意思就是匹配 http://localhost:3000/user

Restfull API 使用请求方法来区分 url

例如在 UserController 中创建 Get 请求方法

ts
@Get()
findAll(@Query() query: any) {
  console.log(query);
  return {
    code: 200,
    message: query.name,
  };
}

@Request()

@Request() 装饰器用来获取所有的请求信息

ts
@Get()
findAll(@Request() req: any) {
  console.log(req.query);
  return {
    code: 200,
    message: req.query.name,
  };
}

@Query()

@Query 装饰器用来获取请求参数,等效于 @Query() == @Request().query

ts
@Get()
findAll(@Query() query: any) {
  console.log(query);
  return {
    code: 200,
    message: query.name,
  };
}

如果只想获取请求参数中的某个值,可以给装饰器工厂传递参数,参数为参数名称的字符串,例如获取 query 中的 name :

ts
@Get()
findAll(@Query('name') name: any) {
  console.log(name);
  return {
    code: 200,
    message: name,
  };
}

@Body()

@Body 装饰器用来获取请求体信息,等效于 @Query() == @Request().body

ts
@Post()
create(@Body('age') age: number) {
  console.log(age);
  return {
    code: 200,
    message: age,
  };
}

@Param()

@Param 装饰器用来获取 url 参数,等效于 @Query() == @Request().param, 一般匹配动态路由参数

ts
@Get(":id")
// http:localhost:3000/user/1 (REST 风格的路由参数)
findId(@Param("id") id:any) {
  console.log(id); // 1
  return {
    code: 200,
    message: id
  }
}

@Headers()

@Headers 装饰器用来获取请求头信息

ts
@Get(":id")
findId(@Param("id") id:any, @Headers() headers) {
  console.log(id);
  console.log(headers);
  return {
    code: 200,
    message: id
  }
}

HttpCode()

@HttpCode 装饰器用来设置接口的状态码

ts
@Get(":id")
@HttpCode(500)
findId(@Param("id") id:any, @Headers() headers) {
  console.log(id);
  console.log(headers);
  return {
    code: 200,
    message: id
  }
}

@Redirect()

路由重定向