likes
comments
collection
share

Nestjs入门,使用nest-cli创建项目并新建接口

作者站长头像
站长
· 阅读数 38

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。

对比ExpressKoa会有更好的TypeScript开发体验。

本文使用NestJS官方脚手架nest-cli搭建后台管理系统的后端项目。

安装nest-cli

nest-cliNestjs的脚手架工具,类似于vue-cli,不仅可以构建项目,还可以生成各种模板文件

首先,我们需要全局安装nest-cli,安装之后,输入nest -v查看版本,检查是否安装成功

npm install -g @nestjs/cli

nest -v
9.1.1

在终端输入nest --help查看各类命令,可以看到,可以使用nest new新建项目

使用nest-cli构建项目

在终端输入nest new nest-admin新建项目,可以选择npm、yarn、pnpm安装node模块

我们可以选择pnpm安装

等待安装完成之后,可以在终端输入npm run start 或者 nest start启动本地项目

命令执行之后,我们打开浏览器,访问localhost:3000

可以看到,项目已经成功运行

Nestjs入门,使用nest-cli创建项目并新建接口

我们可以修改main.ts中的启动端口号,改为3003后,再次启动项目

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3003);
}

新建接口

新建用户模块

项目初始化完成,尝试着新建第一个接口,新建用户模块,新建一个根据id获取用户信息的接口

首先新建用户模块module,新建用户模块的controller,还有接口的具体代码service

// 新建用户module
nest g mo user /modules/user

// 新建用户controller
nest g co user /modules/user

// 新建用户service
nest g s user /modules/user

命令成功运行之后,可以看到src/modules/user文件夹下多了5个文件,分别为

user.module.ts
user.controller.ts
user.service.ts
user.controller.spec.ts
user.service.spec.ts

修改用户模块代码

user.controller.ts新增getUserById的方法,接口get请求中的userId

并调用user.service.ts中的getUserById方法

代码如下

import { Controller, Get, Param } from '@nestjs/common';
import { UserService } from './user.service';

@Controller('user')
export class UserController {
  constructor(private readonly appService: UserService) {}

  @Get(':userId')
  getUserById(@Param('userId') userId: string) {
    return this.appService.getUserById(userId);
  }
}

继续修改user.service.ts,需要一个getUserById方法接收userId,返回用户的信息

由于没有使用到数据库,所以直接返回userId

代码如下

import { Injectable } from '@nestjs/common';

@Injectable()
export class UserService {
  getUserById(userId: string) {
    return `当前用户id:${userId}`
  }
}

重启项目,并访问localhost:3003/user/1024

可以看到,已经成功获取到get请求的userId

Nestjs入门,使用nest-cli创建项目并新建接口

创建CURD模块

nest-cli提供一键生成curd接口的命令,这样可以更快速的创建接口

打开终端,输入 nest g resource ${模块名称},接着选择REST API,后面继续回车即可

nest g resource users
? What transport layer do you use? REST API
? Would you like to generate CRUD entry points? Yes

可以看到这条命令,不仅生成了controllerservice的ts文件以外还生成了entity.tsdto相关的ts文件,后续也使用这种方式生成模块,确实更加方便快捷地完成相关功能

重启项目访问localhost:3003/users/123

可以的到一样的效果

Nestjs入门,使用nest-cli创建项目并新建接口

最后

立个flag,后续会完善项目,并尝试对接ruoyi-ui,完成整套前后端分离项目

文章推荐