控制器

控制器负责处理传入的请求,并返回对客户端的响应。

定义

控制器必须继承基础控制器 Controller



 




import { Controller } from '@dazejs/framework'

export default class User extends Controller {
  // ...
}

1
2
3
4
5
6

定义路由

控制器使用 @Route([prefix]) 装饰器来表示该控制器使用了路由功能

import { Controller, Route } from '@dazejs/framework'

// 当前控制器的端点访问以 '/users' 开头 (可省略开头 '/')
@Route('/users')
export default class User extends Controller {
  // ...
}
1
2
3
4
5
6
7

框架提供了 Get, Post, Put,Patch,Del,Head,Option, All 装饰器(位于 Http 命名空间下),用于创建访问路由:

import { Controller, Route, Http } from '@dazejs/framework'

// 当前控制器的端点访问以 '/users' 开头 (可省略开头 '/')
@Route('users')
export default class User extends Controller {
    // get /users
    @Http.Get()
    index() {
        // ...
    }

    // put /users/:id
    @Http.Put(':id')
    update(id) {
        // ...
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

上面代码会自动创建get方法访问的/users的端点与put方法访问的/users/:id的端点

WARNING

@All 装饰器会使用所有 http 模块支持的方法,详细信息见 http 模块的 http.METHODS 属性

路由参数

路由的参数框架会自动注入到控制器方法中:

import { Controller, Route, Http } from '@daze/framework';

@Route()
export default class User extends Controller {
    @Http.Get('/:name/:age')
    index(name, age) {
        // ...
    }
}
1
2
3
4
5
6
7
8
9

TIP

路由参数根据定义顺序注入

REST 风格

使用 @Rest 装饰器代替 @Route 装饰器,并且默认 Rest 方法无需添加装饰器:

import { Controller, Rest } from '@daze/framework';

@Rest('posts')
export default class Post extends Controller {
   /**
   * Display a listing of the resource.
   */
  index() {
    //
  }

  /**
   * Show the form for creating a new resource.
   */
  create() {
    //
  }

  /**
   * Display the specified resource.
   * @param {number} id
   */
  show(id) {
    //
  }

  /**
   * Show the form for editing the specified resource.
   * @param {number} id
   */
  edit(id) {
    //
  }

  /**
   * Store a newly created resource in storage.
   */
  store() {
    //
  }

  /**
   * Update the specified resource in storage.
   * @param {number} id
   */
  update(id) {
    //
  }

  /**
   * Remove the specified resource from storage.
   * @param {number} id
   */
  destroy(id) {
    //
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

内置 Rest 风格方法:

请求类型 资源地址 控制器方法 说明
get /posts index() 索引/列表
get /posts/create create() 创建(显示表单)
post /posts store() 保存你创建的数据
get /posts/:id show(id) 获取对应id的内容
get /posts/:id/edit edit(id) 编辑(显示表单)
put /posts/:id save(id) 保存你编辑的数据
delete /posts/:id destroy(id) 删除对应id的内容