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

相关推荐
HxY8 天前
Server Sent Event 技术实践
前端·后端·nestjs
浪遏20 天前
大文件上传👈 | React + NestJs |分片、断点续传、秒传🚀 , 你是否知道 ???
前端·面试·nestjs
白日梦想家12261 个月前
【nest系列】之 VO 的配置
nestjs
Junior_FE_20221 个月前
gRPC在Nest中的尝试
后端·nestjs
UOrb1 个月前
手把手从零到一打造在线文档之后端项目搭建
前端·nestjs
东方小月2 个月前
NestJS中如何优雅的实现接口日志记录
前端·后端·nestjs
Running_slave2 个月前
搭建Nestjs+TypeORM+TS服务端应用架构
前端·后端·nestjs
东方小月2 个月前
如何使用GitHub Actions自动部署我们的项目
前端·github·nestjs
泰伦闲鱼2 个月前
nestjs:GET REQUEST 缓存问题
服务器·前端·缓存·node.js·nestjs
求知若饥2 个月前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs