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

相关推荐
plusone5 天前
【Nest指北系列】异常过滤器
nestjs
汪小成9 天前
使用Cursor创建NestJS项目实录(2)用户模块与Prisma配置详解
后端·nestjs
汪小成10 天前
使用Cursor创建NestJS项目实录(1)一个月20$让自己成了个舒服的傻子
后端·nestjs·cursor
求知若饥12 天前
NestJS 项目实战-权限管理系统开发终章
后端·node.js·nestjs
plusone12 天前
【Nest指北系列】中间件
nestjs
qwasdasfd15 天前
【解决问题】nestjs传输文件到指定路径
nestjs
SaebaRyo15 天前
深入理解Nest.js的基础概念
前端·后端·nestjs
程序员Qian17 天前
openai sdk 入门指南
前端·nestjs
KAI18 天前
NestJS使用拦截器和异常过滤器实现 RESTful API的统一响应格式
后端·nestjs
小p20 天前
初探typescript装饰器在一些场景中的应用
前端·typescript·nestjs