使用 nest-cli 脚手架命令,可以很方便的创建一个模块。我们可以在命令行运行 nest --help or nest -h 命令查看nest-cli 脚手架命令。

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
$ nest --help
Usage: nest <command> [options]

Options:
-v, --version Output the current version.
-h, --help Output usage information.

Commands:
new|n [options] [name] Generate Nest application.
build [options] [app] Build Nest application.
start [options] [app] Run Nest application.
info|i Display Nest project details.
update|u [options] Update Nest dependencies.
add [options] <library> Adds support for an external library to your project.
generate|g [options] <schematic> [name] [path] Generate a Nest element.
│ guard │ gu │ Generate a guard declaration │
│ interceptor │ in │ Generate an interceptor declaration │
│ interface │ interface │ Generate an interface │
│ middleware │ mi │ Generate a middleware declaration │
│ module │ mo │ Generate a module declaration │
│ pipe │ pi │ Generate a pipe declaration │
│ provider │ pr │ Generate a provider declaration │
│ resolver │ r │ Generate a GraphQL resolver declaration │
│ service │ s │ Generate a service declaration │
│ library │ lib │ Generate a new library within a monorepo │
│ sub-app │ app │ Generate a new application within a monorepo │
│ resource │ res │ Generate a new CRUD resource │
└───────────────┴─────────────┴──────────────────────────────────────────────┘

创建模块

根据上面的指令得知创建模块指令

1
2
3
4
# 使用 nest-cli 创建一个 user 模块
$ nest g module user
CREATE src/user/user.module.ts (81 bytes)
UPDATE src/app.module.ts (308 bytes)

创建控制器

根据上面的指令得知创建控制器指令

1
2
3
4
5
# 使用 nest-cli 创建一个 user 控制器
$ nest g controller user
CREATE src/user/user.controller.spec.ts (478 bytes)
CREATE src/user/user.controller.ts (97 bytes)
UPDATE src/user/user.module.ts (166 bytes)

定义路由

创建后的 user 模块与 user 控制器,会自动关联起来。我们直接打开 user.controller.ts 文件定义路由即可。

根据 RESTful Api 设计风格,创建路由。

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
import { Controller, Delete, Get, Post, Put } from '@nestjs/common';

@Controller('user')
export class UserController {
@Get()
getAll() {
return [
{
_id: 1,
username: 'Tom',
more: '......',
},
{
_id: 2,
username: 'Jack',
more: '......',
},
];
}

@Post()
create() {
return { success: true };
}

@Get(':id')
detail() {
return {
id: 1,
username: 'Tom',
more: '......',
};
}

@Put(':id')
update() {
return { success: true };
}

@Delete(':id')
del() {
return { success: true };
}
}

使用 PostMan 测试一下路由是否创建成功

Get