请求路由映射由两部分配置决定 @Controller@Method@Controller 路由配置拼接上 @Method 路由配置组合完整的路由映射规则。

@Controller

只有一个字符串类型的配置属性 path ,示例如下

  1. @Controller('users')
  2. export class UserController {
  3. ...
  4. }

@Method

主要包含两个属性 methodpathmethod 与 http 请求的 method 对应, path 可以是字符串,也可以是正则表达式。

我们一般不会直接用 @Method 装饰器,一般会用有它衍生出来的装饰器:

  • @Get
  • @Post
  • @Put
  • @Delete
  • @Patch
  • @Options
  • @Head
  1. import { Controller, Get, Param, Delete, Put, Post, Body } from '@malagu/mvc/lib/node';
  2. @Controller('users')
  3. export class UserController {
  4. @Get()
  5. list(): Promise<User[]> {
  6. ...
  7. }
  8. @Get(':id')
  9. get(@Param('id') id: number): Promise<User | undefined> {
  10. ...
  11. }
  12. @Delete(':id')
  13. async reomve(@Param('id') id: number): Promise<void> {
  14. ...
  15. }
  16. @Put()
  17. async modify(@Body() user: User): Promise<void> {
  18. ...
  19. }
  20. @Post()
  21. create(@Body() user: User): Promise<User> {
  22. ...
  23. }
  24. }