NestJS 是一个用于开发高效、可扩展的 Node.js 服务器端应用程序的框架。其优雅的 TypeScript 支持和深度集成的系统模块,使得开发复杂的后端服务变得前所未有的简单。在这篇文章中,我们将介绍 NestJS 的基础知识,帮助你快速入门。
以下准备工作是 nestjs 运行的基础环境,如果你已经学习或了解了nodejs相关的知识以及开发设备已经成功安装了Node环境和开发IDE,请忽略这部分内容。
npm install -g @nestjs/cli
或者
pnpm install -g @nestjs/cli
nest new your-custom-project-name
npm run start
浏览器访问 http://localhost:3000
nestjs 脚手架生成的最基础的项目包含如下文件列表
├── package.json
├── pnpm-lock.yaml
├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── tsconfig.build.json
└── tsconfig.json
文件介绍:
imports
,controllers
,providers
,exports
等。?? 当我们尝试新鲜事物时,给自己制定一些简单容易实现的目标然后实现它,通过成就感不断的刺激,才会让我们能够坚持深入使用并掌握它。
实现如下HTTP接口
URL | /api/user |
---|---|
Method | GET |
Request | {“name”:”levenx”} |
Response | {“code”:0,“message”:”ok”,“data”:{“name”:”levenx”}} |
接口要求分析,前端通过/api/user接口的query参数携带name参数,接口按照要求格式返回即可。
修改app.controllers.ts文件代码内容
import { Controller, Get, Query } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
@Get('/api/user')
getUserName(@Query() query) {
return {
code: 0,
message: 'ok',
data: {
name: query.name,
},
};
}
}
分析:
在浏览器中访问 http://localhost:3000/api/user?name=levenx,看看返回是否符合预期。
实现公共的service方法给多个HTTP接口使用,service方法的作用是在用户name前面加上 hi!
修改app.service.ts文件内容
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
setHi(name: string): string {
return `hi! ${name}`;
}
}
在app.controller.ts 中使用service方法
import { Controller, Get, Query } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
++ constructor(private readonly appService: AppService) {}
@Get('/api/user')
getUserName(@Query() query) {
return {
code: 0,
message: 'ok',
data: {
++ name: this.appService.setHi(query.name),
},
};
}
}
代码分析:
在浏览器中访问 http://localhost:3000/api/user?name=levenx
Nestjs 是一个非常强大的 Node 框架,它支持了很多能力丰富后端项目工程,本篇教程只是对Nestjs的浅尝辄止,后续我们继续深入Nestjs的更多方面。