Nest.js从0到1搭建博客系统---搭建框架(1)

前言

沉默了很久,最终决定通过空闲时间入手Nest.js的学习。由于是刚入坑(新手村),所有选择博客系统来磨炼自身。这也是我第一次在掘金写文章做笔记。如有不足之处望金友们海涵,如若能指点一二,小生不胜受恩感激。

Nest(NestJS)是一个用于构建高效、可扩展 Node.js 服务器端应用程序的框架。它使用渐进式的JavaScript,完全支持并构建于 TypeScript 上(同时仍然允许开发者使用纯JavaScript进行编码),结合了面向对象编程(OOP)、函数式编程(FP)和函数响应式编程(FRP)的元素。 在内部,Nest使用强大的HTTP服务器框架,如 Express(默认)并且可以选择配置为使用 Fastify! Nest在这些常见的Node.js框架(Express/Fastify)之上提供了一层抽象,同时也直接向开发者暴露了它们的API。这使得开发者可以自由使用众多为底层平台提供的第三方模块。

NestJs中文文档

项目技术栈

  • NestJs
  • TypeORM、Mysql
  • Redis
  • Minio
  • JWT
  • React全家桶(后台管理)
  • Vue3全家桶(前台管理)

努力使自己变优秀,然后骄傲的生活;要一直保持自己喜欢的样子,不要随波逐流,也不要过度失落。温柔的人,一定会有一个好的结局

部署

  • docker
  • 服务器

安装全局脚手架 NEST CLI

shell 复制代码
npm i -g @nestjs/cli

初始化项目

shell 复制代码
nest new nest_vhen_blog

运行项目

shell 复制代码
npm run start:dev
  • 创建模块
shell 复制代码
 nest g mo modules/user
  • 创建控制器
shell 复制代码
 nest g co modules/user
  • 创建服务
shell 复制代码
nest g s modules/user
  • 生成所有的NestJS构建块(模块、服务、控制器类),还生成实体类、DTO类以及测试(.spec)文件
shell 复制代码
nest g resource modules/user

# RESTful 风格

  • 查询--GET
  • 提交--POST
  • 更新--PUT/PATCH
  • 删除--DELETE

RESTful 版本控制

  • URI Versioning :版本将在请求的 URI 中传递(默认)
  • Header Versioning :自定义请求标头将指定版本
  • Media Type Versioning :请求的Accept标头将指定版本
ts 复制代码
import { NestFactory } from '@nestjs/core';
import { VersioningType } from '@nestjs/common';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.enableVersioning({
    type: VersioningType.URI,
  })
  await app.listen(3000);
}
bootstrap();
  • user.controller 配置版本
ts 复制代码
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';

@Controller({
  path: "user",
  version: '1'
})
// @Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) { }

  @Post()
  create(@Body() createUserDto: CreateUserDto) {
    return this.userService.create(createUserDto);
  }

  @Get()
  // @Version('1')
  findAll() {
    return this.userService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.userService.findOne(+id);
  }

  @Patch(':id')
  update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
    return this.userService.update(+id, updateUserDto);
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.userService.remove(+id);
  }
}

项目地址:nest_vhen_blog

相关推荐
亮子AI16 天前
【NestJS】为什么return不返回客户端?
前端·javascript·git·nestjs
小p17 天前
nestjs学习2:利用typescript改写express服务
nestjs
Eric_见嘉23 天前
NestJS 🧑‍🍳 厨子必修课(九):API 文档 Swagger
前端·后端·nestjs
XiaoYu20021 个月前
第3章 Nest.js拦截器
前端·ai编程·nestjs
XiaoYu20021 个月前
第2章 Nest.js入门
前端·ai编程·nestjs
实习生小黄1 个月前
NestJS 调试方案
后端·nestjs
当时只道寻常1 个月前
NestJS 如何配置环境变量
nestjs
濮水大叔2 个月前
VonaJS是如何做到文件级别精确HMR(热更新)的?
typescript·node.js·nestjs
ovensi2 个月前
告别笨重的 ELK,拥抱轻量级 PLG:NestJS 日志监控实战指南
nestjs